Содержание статьи
warning
Подключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Разведка
Сканирование портов
Добавляем IP-адрес машины в /
:
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, он содержит сертификат, а из него мы можем узнать, для какого адреса он действителен. Благо его мы уже добавили в файл /
.
Посмотрим на сами сайты. На первом нас встречает какой‑то одностраничный маркет с полями для ввода. На втором находим GitBucket. Одного взгляда достаточно, чтобы определить, с каким из сайтов стоит начинать работать.
Git
GitBucket — это система для совместной работы с Git-репозиториями, которая предоставляет интерфейс в стиле GitHub. Здесь можно зарегистрироваться, что мы незамедлительно сделаем.
После этого нам становится доступно некоторое количество проектов. Мы можем поискать в исходных кодах критические данные вроде секретов, паролей и прочих интересностей. Также мы можем получить имена пользователей Git.
Запомним пользователей и пойдем по порядку просматривать репозитории. Так, в репозитории маркета мы найдем список дел, где среди прочего запланирована смена конфигурации Apache Tomcat.
Это важно, так как мы узнаем о еще одной технологии, которая используется на сайте. Давай просмотрим историю коммитов. Продвигаясь снизу вверх, остановимся на следующем коммите:
http://seal.htb:8080/root/seal_market/commit/ac210325afd2f6ae17cce84a8aa42805ce5fd010
В нем мы найдем файл конфигурации Tomcat и необходимый для авторизации пароль.
Пробуем авторизоваться с этим паролем в системе GitBucket от имени всех обнаруженных пользователей и выясняем, что можем зайти как luis
. К сожалению, ничего нового нам это не открывает, а к SSH пароль Льюиса не подошел. Поэтому перейдем к сайту маркета.
Точка входа
На сайте у нас возможностей немного, поэтому поищем скрытые страницы перебором. Я буду использовать утилиту ffuf и словарь из набора Seclists.
Справка: сканирование веба c ffuf
Одно из первых действий при тестировании безопасности веб‑приложения — это сканирование методом перебора каталогов, чтобы найти скрытую информацию и недоступные обычным посетителям функции. Для этого можно использовать программы вроде 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
Все найденные страницы выполняют редирект в соответствующий каталог. Но нам интересны только две: admin
и manager
.
При обращении к каталогу /
нам вернут ошибку 404, откуда мы узнаем, что на сервере работает Apache Tomcat 9.0.31. При этом страница /
выполнит редирект в каталог /
, откуда нас снова перенаправляет на /
. Последняя же вернет код 403 — это означает, что у нас недостаточно прав для доступа к странице. Чтобы расширить свою область знаний о сайте, повторим сканирование директорий, но уже в каталоге /
.
ffuf -w ../wordlists/_to_check/directory-list-2.3-medium.txt -u https://seal.htb/manager/FUZZ -fc 403 -t 200
Открываем для себя две новые страницы: text
и status
. Ответ 401 означает, что требуется HTTP-авторизация. У нас уже есть имя пользователя и пароль из конфига Apache Tomcat, поэтому без проблем проходим авторизацию. Нас встретит панель Server Status Apache Tomcat.
Этот материал ничего нам не дает, поэтому стоит попробовать пробиться к закрытым для нас функциям.
Точка опоры
Обход 403 Forbidden
Есть много рекомендаций, как обойти ответ 403 (доступ запрещен), среди которых использование редких методов запроса (вместо обычных GET и POST), разных заголовков HTTP и специальных путей к целевой странице. На все эти случаи у меня есть свои словари, собранные из интернета и объединенные в один. Поэтому я буду использовать Burp Intruder для перебора разных вариантов.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»