Добро пожаловать на BlackSAMP - ФОРУМ

  • Приватные и секретные разделы доступны только зарегистрированным пользователям.

    Вся важная информация в нашем ТГ: t.me/gtablack

    На данном форуме запрещено публиковать контент нарушающий Российское законодательство, за это последует блокировка ФА.

Уязвимость SSTI — выполнение кода через шаблоны

Количество просмотров: 31

IlyaMarkinV

Редактор
Редактор
Регистрация
13 Июн 2025
Сообщения
26
Реакции
1
Баллы
3
Что такое SSTI?
Server-Side Template Injection (SSTI) — это уязвимость, позволяющая внедрять произвольный код в шаблоны веб-приложений, что может привести к RCE (Remote Code Execution).

Как работает уязвимость?
Когда приложение некорректно обрабатывает пользовательский ввод в шаблонах (Twig, Jinja2, Freemarker и др.), злоумышленник может внедрить вредоносный код.

Пример уязвимого кода (Python/Flask):
Код:
@app.route('/welcome')
def welcome():
    name = request.args.get('name', 'Guest')
    template = f"Hello, {name}!"
    return render_template_string(template)

Эксплойт для Jinja2:
Код:
http://example.com/welcome?name={{7*7}}
Ответ: "Hello, 49!" подтвердит уязвимость.

Чем опасна SSTI?
• Выполнение произвольного кода на сервере
• Чтение/запись файлов
• Получение доступа к системе
• Обход аутентификации

Как обнаружить?
1. Попробуйте простые тесты:
- {{7*7}} → 49
- ${7*7} → 49
- <%= 7*7 %> → 49
2. Определите движок шаблонов по синтаксису
3. Используйте payload-ы для конкретных шаблонов

Методы защиты
• Не использовать render_template_string с пользовательским вводом
• Санитизация входных данных
• Использование sandbox для шаблонов
• Ограничение доступа к опасным функциям

Реальные примеры (CVE)
• CVE-2019-3396 — SSTI в Confluence
• CVE-2019-12744 — Уязвимость в Ansible Tower
• Уязвимость в некоторых CMS (например, WordPress плагины)

Важно: Всегда тестируйте SSTI только с разрешения владельца системы!
 
Сверху Снизу