tom@home.htb:~$

Blog o HTB

22 November 2020

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:

To je velmi důležitý typ enumerace, protože mnoho řetězců nezačíná na hlavním marketingovém webu, ale na:

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:

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:

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:

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:

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ž:

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:

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:

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ž:

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

Co si odnést do praxe

Další Související Články V Projektu

HTB Stroje

Techniky

Nástroje

tags: nastroje - fuzzing - web - vhost - subdomains - content-discovery