Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
На этот раз мы с тобой пройдем среднюю по сложности машину с площадки Hack The Box. Ты научишься извлекать ценную информацию из репозиториев Git, обходить контроль доступа HTTP 403, эксплуатировать Apache Tomcat до уровня выполнения произвольного кода и повышать привилегии через Ansible Playbook.
warning
Подключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Добавляем IP-адрес машины в /etc/hosts
:
10.10.10.250 seal.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), 443 (веб‑сервер nginx 1.18.0) и 8080 (отмечен как HTTP-прокси).
Справка: брутфорс учеток
Поскольку в начале прохождения у нас нет учетных данных, нет и смысла изучать службы, которые всегда требуют авторизации (например, SSH). Единственное, что мы можем делать здесь, — это перебирать пароли брутфорсом, но у машин с HTB почти всегда есть другое прохождение. В жизни таких вариантов может не быть, к тому же есть шансы подобрать пароль или получить его при помощи социальной инженерии.
Так как порт 443 работает по протоколу HTTPS, он содержит сертификат, а из него мы можем узнать, для какого адреса он действителен. Благо его мы уже добавили в файл /etc/hosts
.
Посмотрим на сами сайты. На первом нас встречает какой‑то одностраничный маркет с полями для ввода. На втором находим GitBucket. Одного взгляда достаточно, чтобы определить, с каким из сайтов стоит начинать работать.
Главная страница https://seal.htb
Главная страница http://seal.htb:8080
GitBucket — это система для совместной работы с Git-репозиториями, которая предоставляет интерфейс в стиле GitHub. Здесь можно зарегистрироваться, что мы незамедлительно сделаем.
Стартовая страница пользователей после авторизации
После этого нам становится доступно некоторое количество проектов. Мы можем поискать в исходных кодах критические данные вроде секретов, паролей и прочих интересностей. Также мы можем получить имена пользователей Git.
Пользователи системы GitBucket
Запомним пользователей и пойдем по порядку просматривать репозитории. Так, в репозитории маркета мы найдем список дел, где среди прочего запланирована смена конфигурации Apache Tomcat.
Описание репозитория
Это важно, так как мы узнаем о еще одной технологии, которая используется на сайте. Давай просмотрим историю коммитов. Продвигаясь снизу вверх, остановимся на следующем коммите:
http://seal.htb:8080/root/seal_market/commit/ac210325afd2f6ae17cce84a8aa42805ce5fd010
В нем мы найдем файл конфигурации Tomcat и необходимый для авторизации пароль.
Пароль в файле конфигурации Tomcat
Пробуем авторизоваться с этим паролем в системе GitBucket от имени всех обнаруженных пользователей и выясняем, что можем зайти как luis
. К сожалению, ничего нового нам это не открывает, а к SSH пароль Льюиса не подошел. Поэтому перейдем к сайту маркета.
На сайте у нас возможностей немного, поэтому поищем скрытые страницы перебором. Я буду использовать утилиту fuff и словарь из набора Seclists.
Справка: сканирование веба c fuff
Одно из первых действий при тестировании безопасности веб‑приложения — это сканирование методом перебора каталогов, чтобы найти скрытую информацию и недоступные обычным посетителям функции. Для этого можно использовать программы вроде dirsearch и DIRB.
Я предпочитаю легкий и очень быстрый ffuf. При запуске используем следующие параметры:
-w
— словарь (используем directory-list-2.3-medium
);
-t
— количество потоков;
-u
— URL;
-fc
— исключить из результата ответы с кодом 403.
Команда получается следующая:
ffuf -w ../wordlists/_to_check/directory-list-2.3-medium.txt -u https://seal.htb/FUZZ -fc 403 -t 200
Результат сканирования каталогов с помощью ffuf
Все найденные страницы выполняют редирект в соответствующий каталог. Но нам интересны только две: admin
и manager
.
Ответ сервера при доступе к каталогу /admin/
При обращении к каталогу /admin/
нам вернут ошибку 404, откуда мы узнаем, что на сервере работает Apache Tomcat 9.0.31. При этом страница /manager
выполнит редирект в каталог /manager/
, откуда нас снова перенаправляет на /manager/html
. Последняя же вернет код 403 — это означает, что у нас недостаточно прав для доступа к странице. Чтобы расширить свою область знаний о сайте, повторим сканирование директорий, но уже в каталоге /manager/
.
ffuf -w ../wordlists/_to_check/directory-list-2.3-medium.txt -u https://seal.htb/manager/FUZZ -fc 403 -t 200
Результат сканирования каталогов с помощью ffuf
Открываем для себя две новые страницы: text
и status
. Ответ 401 означает, что требуется HTTP-авторизация. У нас уже есть имя пользователя и пароль из конфига Apache Tomcat, поэтому без проблем проходим авторизацию. Нас встретит панель Server Status Apache Tomcat.
Страница Apache Tomcat Server Status
Этот материал ничего нам не дает, поэтому стоит попробовать пробиться к закрытым для нас функциям.
Есть много рекомендаций, как обойти ответ 403 (доступ запрещен), среди которых использование редких методов запроса (вместо обычных GET и POST), разных заголовков HTTP и специальных путей к целевой странице. На все эти случаи у меня есть свои словари, собранные из интернета и объединенные в один. Поэтому я буду использовать Burp Intruder для перебора разных вариантов.
Источник: xakep.ru