Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Сегодня мы с тобой пройдем легкую машину Horizontall с площадки Hack The Box. Для победы нам понадобится проэксплуатировать ряд уязвимостей в Strapi, а затем повысить привилегии через уязвимость в Laravel 8. Погнали!
warning
Подключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Как обычно, добавляем IP-адрес машины в /etc/hosts
, чтобы дальше обращаться по названию:
10.10.11.105 horizontall.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 (веб‑сервер Nginx 1.14.0). SSH пока что пропустим и направимся смотреть, что есть на веб‑сервере.
Стартовая страница сайта horizontall.htb
Там находим одностраничный сайт, который, на первый взгляд, использует какую‑то готовую технологию (то есть сайт не самописный).
Пока что работать не с чем — нужно дальше искать точки входа. А ищут их в таких случаях при помощи перебора каталогов по словарю.
Справка: сканирование веба c ffuf
Одно из первых действий при тестировании безопасности веб‑приложения — это сканирование методом перебора каталогов, чтобы найти скрытую информацию и недоступные обычным посетителям функции. Для этого можно использовать программы вроде dirsearch и DIRB.
Я предпочитаю легкий и очень быстрый ffuf. При запуске указываем следующие параметры:
-w
— словарь (я использую словари из набора SecLists);
-t
— количество потоков;
-u
— URL;
-fc
— исключить из результата ответы с кодом 403.
Набираем:
ffuf -u http://horizontall.htb/FUZZ -fc 403 -t 300 -w directory_2.3_medium.txt
Результат сканирования каталогов с помощью ffuf
Но ничего интересного не находим.
Если не нашли каталоги и страницы, то стоит еще поискать поддомены. Чтобы обратиться к виртуальному хосту, нужно указать этот виртуальный хост в заголовке Host
протокола HTTP. Именно это место мы и пометим для перебора с помощью того же ffuf. Словарь subdomains-top1million-110000.txt
также берем из набора SecLists.
ffuf -u http://horizontall.htb/ -H 'Host: FUZZ.horizontall.htb' -t 300 -w subdomains-top1million-110000.txt
Результат сканирования поддоменов с помощью ffuf
В выводе отражаются вообще все варианты. Обратим внимание на код ответа 301 — перенаправление на другую страницу. Исключим его из вывода (опция -fc 301
).
ffuf -u http://horizontall.htb/ -H 'Host: FUZZ.horizontall.htb' -fc 301 -t 300 -w subdomains-top1million-110000.txt
Результат сканирования поддоменов с помощью ffuf
Теперь в ответе находим всего два варианта: www
и api-prod
. Добавляем их в файл /etc/hosts
.
10.10.11.105 www.horizontall.htb api-prod.horizontall.htb
Первый ведет на прежний сайт, а вот при обращении к api-prod.horizontall.htb
получаем пустую страницу с надписью Welcome. На сайте есть файл robots.txt
, но он тоже не раскрывает никакой информации.
Содержимое файла robots.txt
Снова просканируем директории с ffuf, и на этот раз мы наконец находим дополнительный контент.
ffuf -u http://api-prod.horizontall.htb/FUZZ -fc 403 -t 300 -w directory_2.3_medium.txt
Результат сканирования каталогов с помощью ffuf
Отметим, что мы заодно нашли имена пользователей. Сканирование директорий на новом сайте дало две страницы. При обращении к reviews
получим какой‑то список комментариев в формате JSON.
Содержимое страницы reviews
При обращении к странице admin
никаких полезных данных мы не получим. Но в исходном коде упоминается strapi
.
Исходный код страницы admin
Strapi — это фреймворк для управления контентом, работающий на Node.js. Это так называемая headless CMS, она отвечает только за бэкенд (данные) и может взаимодействовать с любыми платформами представления, будь то сайты или приложения. Эта технология широко применяется, а значит, для нее будет несложно найти хорошо задокументированные эксплоиты, причем не в одном варианте. Искать можно при помощи Google, написав, к примеру, strapi exploit.
Поиск эксплоитов
Первые же ссылки дают нам эксплоиты для удаленного выполнения кода (RCE) и установки произвольного пароля. Пометка Unauthenticated сообщает о том, что баг сработает даже без авторизации.
Эксплоит для установки пароля использует уязвимость CVE-2019-18818 — запросы на сброс пароля обрабатываются неправильно, что позволяет без авторизации изменить пароль пользователя. В коде эксплоита находим запрос проверки версии.
Код эксплоита
Источник: xakep.ru