Содержание статьи
warning
Подключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Разведка
Сканирование портов
Как всегда, добавляем IP-адрес машины в /
:
10.10.11.115 hancliffe.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
).

Видим три открытых порта, причем за все три отвечает веб‑сервер Nginx 1.21.0. Но на портах 80 и 8000 расположены сайты, поэтому начнем с них.


Так мы получаем информационную страницу Nginx на порте 80 и страницу авторизации Stateless Password Manager на порте 8000. Со вторым сайтом все более‑менее понятно, а вот на первом явно может найтись что‑то, помимо информационной странички. Давай поищем! Для перебора каталогов я буду использовать утилиту ffuf.
Справка: сканирование веба c ffuf
Одно из первых действий при тестировании безопасности веб‑приложения — это сканирование методом перебора каталогов, чтобы найти скрытую информацию и недоступные обычным посетителям функции. Для этого можно использовать программы вроде dirsearch и DIRB.
Я предпочитаю легкий и очень быстрый ffuf. При запуске указываем следующие параметры:
-
-w
— словарь (я использую словари из набора SecLists); -
-t
— количество потоков; -
-u
— URL; -
-fc
— исключить из результата ответы с кодом 403.
Задаем нужные параметры и запускаем его:
ffuf -u http://hancliffe.htb/FUZZ -t 256 -w directory_2.3_medium_lowercase.txt

В итоге находим один новый каталог, при запросе которого нам возвращают код ответа 302 — редирект на другой адрес. Если открыть этот адрес в браузере, нас перенаправят на /
.

Такой страницы не существует, поэтому продолжим искать каталоги и файлы в /
.
ffuf -u http://hancliffe.htb/maintenance/FUZZ -t 256 -w files_interesting.txt

Видим много последовательностей, на которые сервер странно реагирует, а также файл index.
.

Точка входа
Тут я решил проверить разные варианты обхода проверки доступа к каталогу. Для перебора последовательностей использовал Burp Pro. В результате удалось получить три возможных варианта ответа от сервера.
-
Доступ к странице Apache Tomcat.
Отображение страницы в Burp Render -
Ответ, сообщающий, что страницы не существует.
Отображение страницы в Burp Render -
Переадресация на другой адрес при помощи HTTP-заголовка
Location
.Отображение страницы в Burp Render
Последний вариант меня заинтересовал. Я попробовал еще раз перебрать файлы, но с последовательностью /..;
для обхода контроля доступа.
ffuf -u 'http://hancliffe.htb/maintenance/..;/FUZZ' -t 256 -w files_interesting.txt

Из полученного списка наибольший интерес вызывает страница login.
.

Точка опоры
В самом низу страницы видим упоминание используемой технологии — nuxeo 10.2. Это значит, что можно поискать готовые эксплоиты. Есть специализированные базы данных вроде Exploit-DB, но куда больше результатов даст Google.

Находим ссылку на репозиторий с PoC для уязвимости CVE-2019-16341. Это баг типа SSTI — включение шаблонов на стороне сервера. Потенциально он может дать нам возможность выполнять произвольный код на сервере. Но сначала немного подправим PoC под наши условия. Начнем с используемой на сервере операционной системы (строки 16 и 17).

Указываем нужный URL (строки 38 и 123).


Вроде бы все готово, запустим скрипт и запросим текущего пользователя.

Код успешно выполнен, и мы получаем нормальный реверс‑шелл. Можно воспользоваться удобным онлайновым генератором шеллов. Выставляем свой локальный адрес и порт, в ответ получаем команду для запуска листенера и бэкконекта.

Выполняем код через эксплоит и получаем обратное подключение.


Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»