Мне дей­стви­тель­но приш­лось пос­тарать­ся, что­бы соб­рать для тебя мощ­ную под­борку кру­тых тулз. Еще и таких, которые никог­да не пуб­ликова­лись в «Хакере». С ними ты смо­жешь работать по век­торам: SSTI, SSRF, HTTP smuggling, отравле­ние и обман web cache и не толь­ко. С некото­рых сдул пыль, но они прек­расно работа­ют и сегод­ня.

warning

Статья име­ет озна­коми­тель­ный харак­тер и пред­назна­чена для спе­циалис­тов по безопас­ности, про­водя­щих тес­тирова­ние в рам­ках кон­трак­та. Автор и редак­ция не несут ответс­твен­ности за любой вред, при­чинен­ный с при­мене­нием изло­жен­ной информа­ции. Рас­простра­нение вре­донос­ных прог­рамм, наруше­ние работы сис­тем и наруше­ние тай­ны перепис­ки прес­леду­ются по закону.

 

0000. Tplmap

Ста­ричок, но очень быс­тро ищет SSTI в веб‑при­ложе­ниях. Авто­мати­чес­ки опре­деля­ет дви­жок шаб­лонов (Jinja2, Twig, Smarty, Mako, Pebble и 15 дру­гих) и экс­плу­ати­рует инъ­екцию вплоть до shell на сер­вере.

SSTI (server-side template injection) — инъ­екция в шаб­лон, воз­ника­ет, ког­да поль­зователь­ский ввод не экра­ниру­ется. Вве­ден­ные дан­ные в чис­том виде попада­ют в шаб­лон и обра­баты­вают­ся шаб­лониза­тором, как осталь­ной код. Клас­сичес­кий при­мер: хакер вво­дит в тек­сто­вое поле {{7*7}}, в отве­те сер­вера при­ходит 49. Это зна­чит, что на сер­вере работа­ет шаб­лониза­тор Jinja2 или Twig. Если при­ложе­ние на PHP, зна­чит, Twig. Бэкенд на Python? Зна­чит, Jinja2. Шаб­лониза­тор вос­при­нял дан­ные в скоб­ках {{..}} как часть шаб­лона и выпол­нил код внут­ри ско­бок.

Тул­за ста­рень­кая, поэто­му при­дет­ся пос­тавить Python 3.9. Сде­лаю это в вир­туаль­ном окру­жении с помощью pyenv. Если pyenv у тебя не уста­нов­лен:

curl https://pyenv.run | bash
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
source ~/.bashrc

Ус­танов­ка tplmap:

git clone https://github.com/epinna/tplmap
python3 -m venv myvenv
source myvenv/bin/activate
pyenv install 3.9.18
pyenv local 3.9.18
pip install -r requirements.txt
pip install PyYAML requests certifi chardet idna urllib3

Да­вай потес­тим на лабе «Server-side template injection in an unknown language with a documented exploit»:

python3 tplmap.py -u "https://0a5e0095032bcee0814db22e008200dd.web-security-academy.net/?message=*" --level=5
Пример работы tplmap
При­мер работы tplmap

Па­раметр --level опре­деля­ет, нас­коль­ко опас­ные инъ­екции исполь­зовать. Начинай с 1; мак­сималь­ный пятый уро­вень ука­зывай толь­ко тог­да, ког­да не боишь­ся нав­редить при­ложе­нию.

Ес­ли нужен шелл, в зависи­мос­ти от усло­вий исполь­зуй опции:

  • --os-shell — инте­рак­тивный шелл в тер­минале;
  • --bind-shell — тул­за забин­дит порт под шелл, тебе оста­нет­ся толь­ко под­клю­чить­ся к нему;
  • --reverse-shell — попыта­ется под­нять реверс‑шелл с под­клю­чени­ем к ука­зан­ным в парамет­ре хос­ту и пор­ту;
  • --tpl-shell — инте­рак­тивный шелл с помощью движ­ка шаб­лониза­тора.

Для выпол­нения команд при­меняй:

  • --os-cmd — выпол­нение ука­зан­ной коман­ды на сер­вере при­ложе­ний;
  • --tpl-code — инъ­екция кода в шаб­лон.

Ви­шен­ка на тор­те — работа с фай­лами. Что­бы ска­чать нуж­ный файл с сер­вера, передай в парамет­ре --download путь к фай­лу, нап­ример /etc/passwd. Для заг­рузки фай­ла на сер­вер юзай --upload.

Как видишь, ста­ричок очень хорош и ори­енти­рован на жес­ткую экс­плу­ата­цию!

 

0001. SSTImap

Раз­работ­ка Вла­дис­лава Кор­чагина, иссле­дова­теля безопас­ности из Рос­сии. Вла­дис­лав зна­ет о SSTI боль­ше, чем кто‑либо еще. Все соб­ранные зна­ния он вло­жил в инс­тру­мент SSTImap. В том чис­ле и в новые виды SSTI: error-based SSTI и boolean error-based blind SSTI. Под­робнее смот­ри в отче­те с OFFZONE 2025.

SSTImap — это све­жий, наворо­чен­ный и умный ана­лог tplmap, у которо­го гораз­до боль­ше воз­можнос­тей. Здесь боль­ше пей­лоадов, спо­собов обой­ти WAF и тон­ких нас­тро­ек. Есть и обо­рот­ная сто­рона медали: тул­зу нуж­но уметь запус­кать. Запуск «в лоб» при­ведет к излишне­му шуму и дол­гому тес­тирова­нию. Осо­бен­но в режиме кра­улин­га и ана­лиза форм.

Ус­танов­ка из репози­тория GitHub:

git clone https://github.com/vladko312/SSTImap
pip3 install -r requirements.txt

При­мер запус­ка:

# Простой запуск
python3 sstimap.py -u 'https://target.com/page?name=John'
# Режим краулинга сайта с тестированием форм
python3 sstimap.py -u 'https://target.com/' --crawl 5 --forms
# Если запросы с JSON в теле
python3 sstimap.py -u 'https://target.com/api/render' \
-m POST \
-d '{"name":"*"}' \
--data-type json \
-H 'Content-Type: application/json'
# Работа с авторизацией
python3 sstimap.py -u 'https://target.com/page?name=*' \
-H 'Authorization: Basic bG9naW46c2VjcmV0' \
-H 'Cookie: session=abc123'
# Запусти Burp Proxy и отслеживай все запросы тулзы. Увидишь пейлоады и реакции
python3 sstimap.py -u 'https://target.com/page?name=*' -p http://127.0.0.1:8080
Работа SSTImap в режиме краулинга и анализа
Ра­бота SSTImap в режиме кра­улин­га и ана­лиза
 

0010. Smuggler

Эта ути­лита чека­ет уяз­вимос­ти типа HTTP request smuggling. Суть ата­ки в том, что фрон­тенд (Nginx, HAProxy и дру­гие реверс‑прок­си) и бэкенд по‑раз­ному интер­пре­тиру­ют гра­ницы HTTP-зап­роса. Ког­да один из них ори­енти­рует­ся на заголо­вок Content-Length, а дру­гой — на Transfer-Encoding: chunked, меж­ду ними воз­ника­ет рас­согла­сова­ние. Часть одно­го зап­роса «про­сачи­вает­ся» в тело сле­дующе­го, отсю­да и наз­вание: smuggling (кон­тра­бан­да).

git clone https://github.com/defparam/smuggler && cd smuggler
pip3 install requests

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.


  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии