Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
В этой статье на примере простой по сложности машины BountyHunter с Hack The Box я продемонстрирую эксплуатацию уязвимости XXE, работу с обертками в PHP и эксплуатацию бага в программе на Python. Это не самые хитрые уязвимости, зато они встречаются в реальных условиях.
warning
Подключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Добавляем IP-адрес машины в /etc/hosts
:
10.10.10.100 bountyhunter.htb
И запускаем сканирование портов.
Справка: сканирование портов
Сканирование портов — стандартный первый шаг при любой атаке. Он позволяет атакующему узнать, какие службы на хосте принимают соединение. На основе этой информации выбирается следующий шаг к получению точки входа.
Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта.
#!/bin/bashports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr 'n' ',' | sed s/,$//)nmap -p$ports -A $1
Он действует в два этапа. На первом производится обычное быстрое сканирование, на втором — более тщательное сканирование, с использованием имеющихся скриптов (опция -A
).
Результат работы скрипта
Находим два открытых порта: 22 (служба SSH) и 80 (веб‑сервер Apache 2.4.41). Начинаем с веб‑сервера.
Справка: брутфорс учеток
Поскольку в начале прохождения у нас нет учетных данных, нет и смысла изучать службы, которые всегда требуют авторизации (например, SSH). Единственное, что мы можем делать здесь, — это перебирать пароли брутфорсом, но у машин с HTB почти всегда есть другое прохождение. В жизни таких вариантов может не быть, к тому же есть шансы подобрать пароль или получить его при помощи социальной инженерии.
Внимательно изучим сайт и соберем ценную информацию. Сайт кажется простеньким. Видим несколько навигационных ссылок и кнопку для скачивания какого‑то файла.
Кнопка оказалась нерабочей, как и первые две ссылки, но зато ссылка Portal приводит нас на страницу portal.php
с текстом «Portal under development. Go here to test the bounty tracker» и еще одной ссылкой. При переходе по ней нас встретит форма ввода «Bounty Report System — Beta».
Отправив тестовые данные, мы получим сообщение, что если база данных готова, то наши данные будут в нее добавлены.
Форма Bounty Report System
Первым делом я хотел тестировать SQL-инъекцию в запросе Insert, но все же взглянул на весь путь наших запросов через Burp. Все запросы можно увидеть в Burp History.
Вкладка Burp History
Что бросилось в глаза — я заполнял четыре параметра, а отправляется один, причем в кодировке Base64. Благо в Burp Pro сейчас есть плагин Inspector, который автоматически разбирает и снимает известные кодировки.
Burp Inspector
Именно Inspector заставил меня перейти с тестирования SQL-инъекции на поиск XXE. А все потому, что параметры отправляются в формате XML.
XML eXternal Entity (XXE) инъекция — это уязвимость в сервисах, которые поддерживают протоколы SOAP и XML-RPC и принимают входные данные в виде XML-документа. Стандарт XML поддерживает включение секции DTD, а секции эти, в свою очередь, могут подключать к документу дополнительные компоненты, так называемые внешние сущности.
Источник: xakep.ru