Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
В этом райтапе я покажу, как эксплуатировать уязвимость в сервисе ADSelfService Plus для захвата домена Active Directory. По дороге захватим хост на Linux, раскрутив цепочку уязвимостей в системе мониторинга Icinga Web 2. Повысим привилегии благодаря дыре в сендбоксе Firejail и сдампим учетные данные из SSSD.
Поможет нам в этом тренировочная машина Cerberus с площадки Hack The Box. Уровень ее сложности — «сложный».
warning
Подключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Добавляем IP-адрес машины в /etc/hosts
:
10.10.11.205 cerberus.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
).
Результат работы скрипта
Сканер нашел всего один открытый порт! Это порт 8080, на котором работает веб‑сервер Apache 2.4.52. При этом в заголовке http-title
сразу отображен редирект на домен icinga.cerberus.local
, который мы добавляем в файл /etc/hosts
.
10.10.11.205 cerberus.htb icinga.cerberus.local cerberus.local
Теперь переходим по этому адресу в браузере, и нас встречает опенсорсная система мониторинга Icinga Web 2.
Форма авторизации icinga.cerberus.local
Первым делом нужно поискать существующие эксплоиты для найденной системы. Мне удалось выйти на блог, где описаны уязвимости для Icinga Web 2. И первое, что привлекает внимание, — это баг, позволяющий читать произвольные файлы на хосте.
Описание уязвимости чтения произвольных файлов
Пробуем указанным в описании способом прочитать файл /etc/hosts
.
http://icinga.cerberus.local:8080/icingaweb2/lib/icinga/icinga-php-thirdparty/etc/hosts
Содержимое файла /etc/hosts
Но одно дело — иметь такую возможность, а другое — знать, какие файлы читать. В этом поможет документация Icinga, где можно посмотреть имена и описание файлов с настройками. Первый интересный файл — это confing.ini
. Он содержит глобальные настройки, к примеру путь к файлам модулей.
http://icinga.cerberus.local:8080/icingaweb2/lib/icinga/icinga-php-thirdparty/etc/icingaweb2/config.ini
Содержимое файла config.ini
Второй интересный файл — resources.ini
. В нем записаны учетные данные для подключения к базе данных.
http://icinga.cerberus.local:8080/icingaweb2/lib/icinga/icinga-php-thirdparty/etc/icingaweb2/resources.ini
Содержимое файла resources.ini
С этими учетными данными получается авторизоваться на сайте.
Главная страница Icinga
Теперь у нас есть доступ к сайту, и можно перейти к другой описанной в том же ресерче уязвимости CVE-2022-24715. Аутентифицированные пользователи с доступом к настройкам фреймворка могут создавать файлы ресурсов SSH в непредусмотренных каталогах, что приводит к выполнению произвольного кода. Уязвимость заключается в неправильной проверке переданной строки в коде на PHP. Если использовать null-байт, то при проверке он будет учтен и строка получится обрезанной, но в момент записи в файл null-байт не будет учитываться, что приведет к записи дополнительных данных.
Описание уязвимости
Источник: xakep.ru