Содержание статьи
Поможет нам в этом тренировочная машина Cerberus с площадки Hack The Box. Уровень — сложный.
warning
Подключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Разведка
Сканирование портов
Добавляем IP-адрес машины в /
:
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.
, который мы добавляем в файл /
.
10.10.11.205 cerberus.htb icinga.cerberus.local cerberus.local
Теперь переходим по этому адресу в браузере, и нас встречает опенсорсная система мониторинга Icinga Web 2.
Точка входа
Первым делом нужно поискать существующие эксплоиты для найденной системы. Мне удалось выйти на блог, где описаны уязвимости для Icinga Web 2. И первое, что привлекает внимание, — это баг, позволяющий читать произвольные файлы на хосте.
Пробуем указанным в описании способом прочитать файл /
.
http://icinga.cerberus.local:8080/icingaweb2/lib/icinga/icinga-php-thirdparty/etc/hosts
Но одно дело — иметь такую возможность, а другое — знать, какие файлы читать. В этом поможет документация Icinga, где можно посмотреть имена и описание файлов с настройками. Первый интересный файл — это confing.
. Он содержит глобальные настройки, к примеру путь к файлам модулей.
http://icinga.cerberus.local:8080/icingaweb2/lib/icinga/icinga-php-thirdparty/etc/icingaweb2/config.ini
Второй интересный файл — resources.
. В нем записаны учетные данные для подключения к базе данных.
http://icinga.cerberus.local:8080/icingaweb2/lib/icinga/icinga-php-thirdparty/etc/icingaweb2/resources.ini
С этими учетными данными получается авторизоваться на сайте.
Точка опоры
Теперь у нас есть доступ к сайту, и можно перейти к другой описанной в том же ресерче уязвимости CVE-2022-24715. Аутентифицированные пользователи с доступом к настройкам фреймворка могут создавать файлы ресурсов SSH в непредусмотренных каталогах, что приводит к выполнению произвольного кода. Уязвимость заключается в неправильной проверке переданной строки в коде на PHP. Если использовать null-байт, то при проверке он будет учтен и строка получится обрезанной, но в момент записи в файл null-байт не будет учитываться, что приведет к записи дополнительных данных.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»