Wprowadzenie do Server side template injection na przykładzie strony Templated – Hack The Box

Team Seb managed to abduct nginxatsu from Dr. Talin’s hospital after he was submitted there for injuries he sustained from a recent duel. Now they’ve turned him into a nginx config generator, this is so despicable… YOU HAVE TO SAVE HIM! 🚑

Na początek dostajemy link, pod którym widnieją informacje o tym, że strona jest w trakcie budowy oraz o używanym silniku i frameworku.

Szukając ukrytych endpointów, dostajemy informację, że strona >>ENDPOINT<< nie istnieje. Sprawdzamy, czy strona jest podatna na template injection, wpisując po slashu ‘{{7*7}}’.

Na stronie możliwe jest umieszczenie złośliwego ładunku. Ze strony początkowej wiemy, że strona używa silnika Jinja2. Jest to dla nas informacja, że powinniśmy skupić się na poszukiwaniu payloadów związanych właśnie z nim. W taki sposób natrafiamy na link do interesującego repozytorium z przykładami złośliwych ładunków.

https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#jinja2—dump-all-used-classes

Jeden z wypisanych przykładów pozwala nam na wykonywanie poleceń Unix. W przykładzie jest to komenda ‘ls’, służąca do listowania plików.

{{config.__class__.__init__.__globals__[’os’].popen(’ls’).read()}}

Spróbujmy zrobić to samo.

Dostaliśmy w ten sposób nazwy folderów oraz plików z głównego folderu. Jeden z nich o nazwie flag.txt przykuwa naszą uwagę. Spróbujmy go otworzyć modyfikując poprzednie polecenie.

{{config.__class__.__init__.__globals__[’os’].popen(’cat flag.txt’).read()}}

W taki sposób dochodzimy do rozwiązania.

Źródła

https://portswigger.net/web-security/server-side-template-injection

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.