Мне дей­стви­тель­но приш­лось пос­тарать­ся, что­бы соб­рать для тебя мощ­ную под­борку кру­тых тулз. Еще и таких, которые никог­да не пуб­ликова­лись в «Хакере». С ними ты смо­жешь работать по век­торам: 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

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

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

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

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

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

    Подписаться

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