Wfuzz
Úvod a kontext
Wfuzz je v tomto projektu praktický hlavně v jedné velmi konkrétní roli: hledání vhostů, hostname a dalších webových variant, které hlavní stránka sama neprozradí. Není to jen obecný fuzzing nástroj. V místních rozborech je nejcennější tehdy, když hlavní web vrací minimum, ale je silné podezření, že za stejnou IP leží ještě jiný, zajímavější host.
Na Horizontallu odhalí api-prod.horizontall.htb. Na Devzatu najde pets.devzat.htb, za kterým leží .git a zdroják aplikace. Na Forge objeví admin.forge.htb. Na Playeru a ForwardSlashi dělá v principu stejnou práci: z webu, který sám nic moc neřekne, vytáhne další hostname, kde útok opravdu začíná.
Co Wfuzz v praxi řeší
Wfuzz je flexibilní HTTP fuzzing nástroj. Prakticky v tomto projektu odpovídá hlavně na otázku:
- existuje vedle hlavního webu ještě další vhost nebo hostname, který aplikace neukazuje přímo, ale server ho obsluhuje?
To je velmi důležitý typ enumerace, protože mnoho řetězců nezačíná na hlavním marketingovém webu, ale na:
- API subdoméně,
- admin vhostu,
- interním hostu,
- nebo vedlejším produktu na stejné IP.
Nejčastější scénáře využití v tomto projektu
Hledání vhostu s výrazně zajímavějším povrchem
Na Horizontallu jsou na první pohled otevřené jen SSH a nginx. Hlavní web nic zásadního neukáže, takže dává smysl hledat další hostname:
wfuzz -H "Host: FUZZ.horizontall.htb" \
-w SecLists/Discovery/DNS/subdomains-top1million-110000.txt \
--sc 200 http://10.10.11.105
Výsledek:
api-prod.horizontall.htb
To je přesně okamžik, kdy Wfuzz změní celý útok:
- z nudného nginx webu,
- na API a admin rozhraní,
- za kterým pak
WhatWebidentifikuje Strapi a otevře cestu k RCE.
Právě proto se Wfuzz dobře doplňuje s článkem WhatWeb: nejdřív je potřeba nový host najít, teprve potom dává smysl řešit jeho fingerprinting.
Vedlejší host jako zdroják nebo vývojové artefakty
Na Devzatu je situace podobná. Hlavní web ještě nic zásadního neotevře, ale Wfuzz najde pets.devzat.htb:
wfuzz -H "Host: FUZZ.devzat.htb" \
-w SecLists/Discovery/DNS/subdomains-top1million-110000.txt \
--sc 200 http://10.10.11.118
Právě na tomhle vhostu pak leží .git, a tím i zdroják celé aplikace.
To je prakticky důležitý pattern:
Wfuzzsám nic neexploituje,- ale najde host, na kterém teprve leží rozhodující artefakt.
Tento vzorec úzce souvisí i s článkem Otevřený .git, zálohy a vývojové artefakty jako první foothold.
Admin nebo interní vhost, který hlavní aplikace neprozradí
Na Forge hlavní aplikace nic zásadního neukáže. Wfuzz ale odhalí admin.forge.htb:
wfuzz -H "Host: FUZZ.forge.htb" \
-w SecLists/Discovery/DNS/subdomains-top1million-110000.txt \
--sc 200 http://10.10.11.111
=> admin.forge.htb
To je velmi praktická role nástroje:
- vytáhne druhou větev aplikace,
- která má jinou funkci,
- a často i vyšší bezpečnostní dopad než veřejná část.
Filtrování šumu podle statusu nebo délky odpovědi
Na vhost fuzzingu je důležité, že server často na neplatný host taky nějak odpovídá. Proto se v rozborech používají filtry typu:
--sc 200,--hh 0,- nebo jiné odfiltrování uniformních odpovědí.
Právě to dělá z Wfuzzu praktický nástroj. Bez filtrování by šlo jen o hlučný seznam téměř stejných odpovědí.
Kdy je Wfuzz nejlepší volba
Největší smysl dává tehdy, když:
- už máte IP a hlavní doménu,
- hlavní web nepůsobí jako skutečný vstupní bod,
- a je realistické, že server obsluhuje další hostname podle
Hosthlavičky.
V takových situacích bývá rychlejší a přesnější než slepé hádání dalších subdomén bez HTTP ověření.
Co Wfuzz neumí vyřešit za vás
Wfuzz:
- sám neřekne, proč je nalezený vhost důležitý,
- nenahradí obsahovou enumeraci nebo fingerprinting,
- a nefunguje dobře bez rozumných filtrů na odpovědi.
Na Horizontallu je po nalezení vhostu stále potřeba WhatWeb a další analýza. Na Devzatu po nalezení hostu přichází .git a zdroják. Na Forge se teprve pak ukáže administrační funkce. Wfuzz řeší jen to, že nový host vůbec existuje.
Nejčastější chyby při použití
Fuzzing bez filtrování
Pokud server vrací uniformní odpověď na každou Host hlavičku, bez filtrů dostanete hromadu šumu. Praktická hodnota nástroje stojí právě na tom, že umíte:
- odfiltrovat běžnou odpověď,
- a zvýraznit jen odchylky.
Záměna vhost discovery za subdomain enum obecně
Wfuzz v těchto rozborech neřeší DNS jako takové. Řeší HTTP vhosty nad známou IP nebo serverem. To je jiný problém než klasická DNS enumerace.
Zastavení u nalezeného hostu
Nalezený vhost ještě nic neznamená. Praktická hodnota vzniká až tehdy, když:
- ho profilujete,
- projdete obsah,
- nebo najdete vedlejší artefakt, admin funkci či API.
Nejčastější praktické scénáře
Hlavní web nic neříká a potřebuji zjistit, zda existuje zajímavější vhost
To je Horizontall, Forge nebo Player.
Potřebuji najít host, za kterým leží zdroják nebo jiný vedlejší artefakt
To je Devzat.
Potřebuji ověřit Host-based rozvětvení aplikace na stejné IP
To je obecně nejtypičtější role Wfuzzu v těchto rozborech.
Související články v projektu
- Rozbory: Horizontall, Devzat, Forge, ForwardSlash, Player
- Nástroje: WhatWeb, Dirsearch
- Techniky: Otevřený
.git, zálohy a vývojové artefakty jako první foothold, Exponovaná debug, maintenance a administrační rozhraní
Co si odnést do praxe
Wfuzzje v praxi nejcennější jako nástroj na rychlé vhost discovery tam, kde hlavní web sám nic neprozradí.- Největší hodnotu má tehdy, když dobře filtrujete odpovědi a nehledáte “všechno”, ale konkrétní odchylky.
- Nalezený host je teprve začátek. Skutečný dopad přinese až další obsahová a technologická analýza.
Další Související Články V Projektu
HTB Stroje
Techniky
- kid/jku a vzdálené načítání klíčů
- OAuth a zneužití autorizačního toku
- NoSQL injection v loginu a extrakce přes `$regex` / `$ne`