Содержание статьи
- Разведка
- Точка входа
- Точка опоры
- Продвижение
- Локальное повышение привилегий
- Поиск информации
- OpenCATS CMS
- Whois + Fail2ban
В этом райтапе я покажу, как эксплуатировать Adminer, OpenTSDB и OpenCATS. Для повышения привилегий будем использовать комбинацию уязвимостей и неправильных конфигураций ПО: уязвимость произвольной записи файлов OpenCATS для конфигурации whois, whois для получения и инъекции команды терминала ОС в Fail2ban и Fail2ban для ее активации. Все это — в рамках прохождения сложной машины AdmirerToo с площадки Hack The Box.
Подключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Разведка
Добавляем IP-адрес машины в /etc/hosts для удобства:
10.10.11.137 admirertoo.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 — служба OpenSSH 7.9p1 и 80 — веб‑сервер Apache 2.4.38.
Начинаем традиционно с веба.
Главная страница сайта
Первым делом просканируем сайт на наличие скрытых ресурсов.
Справка: сканирование веба c ffuf
Одно из первых действий при тестировании безопасности веб‑приложения — это сканирование методом перебора каталогов, чтобы найти скрытую информацию и недоступные обычным посетителям функции. Для этого можно использовать программы вроде dirsearch и DIRB.
Я предпочитаю легкий и очень быстрый ffuf. При запуске указываем следующие параметры:
-
-w— словарь (я использую словари из набора SecLists); -
-t— количество потоков; -
-u— URL; -
-fc— исключить из результата ответы с кодом 403.
ffuf -u http://admirertoo.htb/FUZZ -t 256 -w files_interesting.txt -fc 403
Результат сканирования каталогов с помощью ffuf
Ничего найти не удалось. Зато когда я попытался перейти на точно не существующую страницу, я получил ссылку на домен admirer-gallery.htb.
Добавим найденный домен в файл /etc/hosts и повторим сканирование на новом домене. Так найдем новый поддомен!
10.10.11.137 admirertoo.htb admirer-gallery.htb
ffuf -u http://admirer-gallery.htb -t 256 -w subdomains-top1million-110000.txt -H 'Host: FUZZ.admirer-gallery.htb' -fs 14099
Результат сканирования поддоменов
Его тоже добавляем в /etc/hosts и получаем доступ к панели авторизации Adminer.
10.10.11.137 admirertoo.htb admirer-gallery.htb db.admirer-gallery.htb
Страница авторизации Adminer
Adminer — это легковесный инструмент администрирования СУБД, что‑то вроде легкого варианта phpMyAdmin. Так как авторизация происходит по нажатию на кнопку, значит, учетные данные уже должны быть в исходном коде страницы.
Исходный код страницы
Так мы находим имя пользователя и пароль. Но сама панель Adminer ничего, кроме номера версии, нам не раскрывает.
Рабочая панель Adminer
Точка входа
Раз мы знаем номер версии, стоит поискать существующие эксплоиты. Делать это я рекомендую при помощи Google.
Поиск эксплоитов для Adminer 4.7.8
Так мы находим инструкцию с описанием уязвимости (PDF). Этот баг позволит нам просканировать внутренние ресурсы, а именно порты. Как указано в статье, запустим скрипт‑редиректор.
python2 redirect.py -p 80 http://127.0.0.1
Затем я решил перебрать возможные СУБД. Их список есть в документации Adminer, а для перебора я использовал Burp.
Список поддерживаемых СУБД
Вместо server вставляем СУБД, а вместо localhost — свой локальный IP-адрес. Для некоторых СУБД получим ответ с записью () admirer_ro..., а в других случаях совсем ничего.
Тогда я нашел исходники Adminer на GitHub и посмотрел, как указываются разные модули.
И первый же модуль elastic делает запрос на наш хост.
А в браузере получаем код HTML-страницы с сервера. Это значит, что мы добились от сервера выполнения произвольного запроса на другой ресурс.
Точка опоры
Теперь нам нужно найти внутренние сервисы и получить какую‑нибудь информацию от них. Искать их сканированием через найденную уязвимость — дело долгое и трудоемкое, поэтому начнем с поиска портов, подключение к которым фильтруется. Для этого выполним SYN-сканирование.
nmap -p- -sS admirertoo.htb
Результат сканирования портов