Содержание статьи
Наша конечная цель — получение прав суперпользователя на машине DarkCorp с учебной площадки Hack The Box. Уровень сложности задания, как ты уже мог догадаться, — «безумный».
warning
Подключаться к машинам с HTB рекомендуется с применением средств анонимизации и виртуализации. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Разведка
Сканирование портов
Итак, приступим. Как всегда, добавляем IP-адрес машины в /:
10.10.11.54 darkcorp.htb
И запускаем сканирование портов.
Справка: сканирование портов
Сканирование портов — стандартный первый шаг при любой атаке. Он позволяет атакующему узнать, какие службы на хосте принимают соединение. На основе этой информации выбирается следующий шаг к получению точки входа.
Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта:
#!/bin/bashports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '' ',' | sed s/,$//)nmap -p$ports -A $1Он действует в два этапа. На первом производится обычное быстрое сканирование, на втором — более тщательное сканирование, с использованием имеющихся скриптов (опция -A).

Сканер нашел два открытых порта:
- 22 — служба OpenSSH 9.2p1;
- 80 — веб‑сервер Nginx 1.22.1.
Выбора нет, начинаем с веб‑сервера.
Точка входа
Нас редиректит на домен drip., и система, естественно, не резолвит имя.

Обновим запись в файле / и снова обратимся к сайту.
10.10.11.54 darkcorp.htb drip.htb

На сайте находим информацию о собственном почтовом сервисе (судя по картинке, это Roundcube). Также есть ссылка на авторизацию в почте, однако и этот домен не будет резолвиться.

Опять дополняем запись в / и обновляем страницу почтового сервиса.
10.10.11.54 darkcorp.htb drip.htb mail.drip.htb

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

Продолжаем собирать информацию. Узнаем, какая версия Roundcube развернута на сервере.

Первым делом стоит проверить, есть ли для нее готовые эксплоиты. Просто поищем их в Google.

Третья ссылка ведет на репозиторий GitHub с описанием уязвимости CVE-2024-42009.
CVE-2024-42009
Roundcube до версии 1.5.7 и с 1.6.x до 1.6.7 содержит уязвимость XSS, что дает возможность через отправку специального сообщения получить все данные из почтового ящика атакуемого пользователя, в том числе и содержимое сообщений.
Но нам нужно найти почтовые адреса для атаки. В форме Contact Us на сайте можно отправить сообщение, а в Burp Proxy — увидеть, что оно идет на почтовый ящик support@drip..


Также интересно, от имени какого пользователя отправляется сообщение. Чтобы это узнать, используем Burp Repeater и изменим целевой адрес на свой.

В почте проверим «Входящие» и из нового сообщения узнаем почтовый адрес безопасника bcase@drip..

Теперь немного адаптируем код эксплоита. В строке 34 изменим TARGET_URL, в строке 44 укажем адрес своего веб‑сервера, куда будет эксфильтровано содержимое почтового ящика, а в переменной post_data заменим адрес отправителя и получателя.

Запускаем веб‑сервер:
python3 -m http.server 4444
А теперь запускаем сам эксплоит:
python3 -m venv venv
source ./venv/bin/activate
pip install requests beautifulsoup4
python3 exploit.py


Декодируем данные из Base64 и открываем файлы через браузер. В одном из сообщений с адреса ebelford@drip. находим упоминание неизвестного нам сервиса dev-a3f1-01..

Точка опоры
Обновляем запись в файле / и отправляемся смотреть новый сервис.
10.10.11.54 darkcorp.htb drip.htb mail.drip.htb dev-a3f1-01.drip.htb

Сайт недоступен, но на странице ошибки есть ссылка на авторизацию. А там — функция сброса пароля.

Чтобы сбросить пароль, укажем почту пользователя. Так как мы можем читать сообщения пользователей, введем почту bcase@drip., а затем повторим эксплуатацию XSS. В сообщении найдем ссылку на страницу изменения пароля.


Устанавливаем для учетной записи свой пароль и авторизуемся в системе.

На странице Analytics выводятся логи и присутствует поле для фильтра.

Первым делом попробуем нагрузку для SQL-инъекции. На странице отобразилась ошибка SQL, а значит, будем копать дальше в этом направлении.

SQL-инъекция
При эксплуатации SQL-инъекции первым делом узнаем версию СУБД.
''; SELECT version() -- -
Продолжение доступно только участникам
Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».
Присоединяйся к сообществу «Xakep.ru»!
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
