Перейти к содержимому
← Каталог python SSTI

Blind SSTI: Notification Templates

Админ-шаблон email-уведомлений рендерится через render_template_string() — слепая SSTI через time-based payload.

mediumpythonPro
Задача
# Server-Side Template Injection: слепой через лог уведомлений ## Сценарий Перед вами Flask-приложение интернет-магазина SecureShop. У администратора есть служебный раздел: настройка тел email-уведомлений (подтверждение заказа, приветствие нового пользователя). Тело шаблона хранится в базе данных. На каждое отправленное уведомление сервер прогоняет шаблон через шаблонизатор с подстановкой переменных пользователя/заказа/приложения и записывает итоговый текст в лог уведомлений, доступный администратору. Как и в базовом SSTI, тело шаблона — это пользовательский ввод (со стороны администратора), который рендерится через машинерию шаблонизатора **как сам шаблон**. То есть в нём можно использовать не только разрешённые подстановки имён, но и любые выражения языка шаблонов: вычисления, обращения по атрибутам, доступ к встроенным глобалам Python — и через них до модуля работы с операционной системой и переменных окружения. В отличие от базовой задачи, ответ на форму редактирования шаблона **не отображает** результат рендеринга атакующему. Канал обратной связи косвенный: после рендеринга текст уведомления попадает в лог, доступный администратору. Это делает SSTI «слепым» с точки зрения непосредственной формы, но содержательно ничем не безопаснее: всё, что нужно — найти место, где попадает результат рендера, и читать его оттуда. ## Цели 1. Войдите в админ-панель (учётные данные администратора в данных лабы) и найдите раздел редактирования шаблонов уведомлений. 2. Подтвердите, что тело шаблона действительно интерпретируется шаблонизатором сервера, а не выводится строкой. Удобно делать это через **косвенный** канал, поскольку прямого вывода нет. 3. Извлеките через SSTI значение CTF-флага из переменных окружения процесса; читайте результат там, где попадает вывод шаблона. ## Данные | Параметр | Значение | |----------|----------| | Администратор | `admin` / `SuperSecret` | | Обычный пользователь | `demo` / `demo` |
🚧 Сайт в разработке. Полный функционал пока недоступен. Все вопросы — support@hackandfix.ru