tags: Enumerazione_Vhost Vhost
La differenza principale tra VHost e sottodomini è che un VHost è sostanzialmente un “sottodominio” servito sullo stesso server e ha lo stesso IP, per cui un singolo IP potrebbe servire due o più siti web diversi.
Per cercare i VHost, senza aggiungere manualmente l’intera wordlist al nostro /etc/hosts, applicheremo il fuzzing alle intestazioni HTTP, in particolare all’intestazione Host:. Per farlo, possiamo usare il flag -H per specificare un’intestazione e utilizzare la parola chiave FUZZ al suo interno, come segue:
ffuf -w /opt/useful/seclists/Discovery/DNS/subdomains-top1million-5000.txt:FUZZ -u http://academy.htb:PORT/ -H 'Host: FUZZ.academy.htb'
/'___\ /'___\ /'___\
/\ \__/ /\ \__/ __ __ /\ \__/
\ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\
\ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/
\ \_\ \ \_\ \ \____/ \ \_\
\/_/ \/_/ \/___/ \/_/
v1.1.0-git
________________________________________________
:: Method : GET
:: URL : http://academy.htb:PORT/
:: Wordlist : FUZZ: /opt/useful/seclists/Discovery/DNS/subdomains-top1million-5000.txt
:: Header : Host: FUZZ
:: Follow redirects : false
:: Calibration : false
:: Timeout : 10
:: Threads : 40
:: Matcher : Response status: 200,204,301,302,307,401,403
________________________________________________
mail2 [Status: 200, Size: 900, Words: 423, Lines: 56]
dns2 [Status: 200, Size: 900, Words: 423, Lines: 56]
ns3 [Status: 200, Size: 900, Words: 423, Lines: 56]
dns1 [Status: 200, Size: 900, Words: 423, Lines: 56]
lists [Status: 200, Size: 900, Words: 423, Lines: 56]
webmail [Status: 200, Size: 900, Words: 423, Lines: 56]
static [Status: 200, Size: 900, Words: 423, Lines: 56]
web [Status: 200, Size: 900, Words: 423, Lines: 56]
www1 [Status: 200, Size: 900, Words: 423, Lines: 56]
Vediamo che tutte le parole nell’elenco restituiscono 200 OK! Questo è prevedibile, dato che stiamo semplicemente modificando l’intestazione mentre visitiamo http://academy.htb:PORT/. Quindi, sappiamo che otterremo sempre 200 OK. Tuttavia, se il VHost esiste e ne inviamo uno corretto nell’intestazione, dovremmo ottenere una dimensione di risposta diversa, poiché in tal caso otterremmo la pagina da quel VHost, che probabilmente mostrerà una pagina diversa, quindi ci basta filtrare per la dimensione delle risposte negative.
Una volta trovato un Vhost lo dobbiamo aggiungere al nostro file /etc/hosts per poterlo raggiungere via browser.
Vediamo che possiamo accedere alla pagina, ma otteniamo una pagina vuota, a differenza di quella che ottenevamo con academy.htb, confermando quindi che si tratta effettivamente di un VHost diverso. Possiamo anche visitare https://admin.academy.htb:PORT/blog/index.php e vedremo che otterremo un errore 404 PAGE NOT FOUND, a conferma che ora ci troviamo effettivamente su un VHost diverso.