Перейти к содержимому

Поиск по платформе

Advanced SSTI: Вызов методов и доступ к контексту

Эксплуатация SSTI через вызов методов объектов в контексте шаблона.

Автор: Hack & Fix
Освоишь: логика вне шаблоновcontext-escapesandbox engine
Средне+60 XP ~40 мин golang
CWE-1336 · A03:2021 Pro
Обложка: Advanced SSTI: Вызов методов и доступ к контексту Обложка: Advanced SSTI: Вызов методов и доступ к контексту
Задача
# Персистентная SSTI в шаблоне email-уведомлений ## Сценарий Вы — специалист службы безопасности площадки флеш-распродаж **DealDeck**. Недавно уволился маркетолог с доступом в админ-панель, и вы проверяете, не оставил ли он закладок. Под подозрением «дизайнер» email-уведомлений — админская фича, в которой задаётся текст письма, получаемого всеми покупателями при оформлении заказа. Предпросмотр на той же странице рендерит введённый шаблон прямо на сервере. В контексте рендеринга письма есть конфиденциальная метка — проверьте, можно ли достать её из админ-сессии и что при этом получат покупатели. ## Цель 1. Войдите администратором и разберитесь, как «дизайнер» обрабатывает введённый текст: как строку с плейсхолдерами или как код шаблона. 2. Выведите контекст рендеринга письма целиком и найдите поле со служебной меткой. 3. Извлеките метку через предпросмотр и подтвердите второй канал утечки: то же значение уходит покупателям в письме о заказе. ## Теория SSTI в административных инструментах опаснее обычной: контекст рендеринга там богаче, а сохранённый шаблон применяется ко всем последующим письмам. Однократная инъекция превращается в персистентную закладку: после компрометации одной админ-учётки вредоносный шаблон продолжает работать и рассылать секрет дальше — в письма пользователей и журналы доставки. **Уязвимый паттерн:** ```go tmpl, _ := texttemplate.New("email").Parse(adminEmailTemplate) ``` Строка из формы дизайнера парсится как полноценный шаблон и исполняется с контекстом, в котором среди рабочих полей затесалась служебная метка. Язык шаблонов позволяет вывести контекст целиком или обратиться к любому полю по имени — и то и другое попадает и в предпросмотр, и в тело письма о заказе. ## Точка входа атаки `POST /admin/email-template` — форма «дизайнера» писем (параметр `email_template`); предпросмотр рендерится на `GET /admin`, готовые письма — на `GET /email` после оформления заказа. * **Администратор:** `admin` / `LabAdmin2024!` * **Покупатель для проверки рассылки:** `demo` / `demo` * **Цель:** служебная метка из контекста рендеринга письма

Похожие лабораторные (4)

другие лабы по этой уязвимости
Обложка лабы: Basic SSTI: Кастомное приветствие Обложка лабы: Basic SSTI: Кастомное приветствие
SSTI

Basic SSTI: Кастомное приветствие

Утечка конфиденциальных данных из контекста страницы через небезопасную обработку шаблонов.

+30 XP
Go Pro
Exploit Fix
Обложка лабы: SSTI Email: Инъекция шаблона в email-сообщение Обложка лабы: SSTI Email: Инъекция шаблона в email-сообщение
SSTI

SSTI Email: Инъекция шаблона в email-сообщение

SSTI-уязвимость: пользовательский ввод передаётся в template.Parse(), позволяя читать серверные данные.

+90 XP
Go Pro
Exploit Fix
Обложка лабы: SSTI: Twig createTemplate() Injection Обложка лабы: SSTI: Twig createTemplate() Injection
SSTI

SSTI: Twig createTemplate() Injection

Пользовательский ввод передаётся в Twig createTemplate(), что позволяет выполнить произвольный код на сервере.

+60 XP
PHP Pro
Exploit Fix
Обложка лабы: Blind SSTI: Notification Templates Обложка лабы: Blind SSTI: Notification Templates
SSTI

Blind SSTI: Notification Templates

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

+60 XP
Python Pro
Exploit Fix