tags: Time_Based_Bruteforce Bruteforce Burpsuite_Time_Based_Bruteforced


Quando il server ci risponde con messaggi generici dopo l’immissione di credenziali sbagliate possiamo ancora utilizzare il tempo a nostro favore nel senso che spesso il server prima processa l’username, se è corretto processa anche la password, se è sbagliato risponde subito con un errore di credenziali, per verificare questo comportamento abbiamo prima bisogno di almeno un username che siamo sicuri essere valido proprio per testare questa vulnerabilità. Testarla è semplicissimo, prima proviamo con nomi utenti che siamo sicuri non possano esistere e vediamo il tempo di risposta del server aumentando la lunghezza della password ad ogni richiesta, teoricamente la risposta dovrebbe avere più o meno lo stesso tempo, poi proviamo con un utente che siamo sicuri esista e facciamo la stessa cosa aumentando la lunghezza della password ad ogni richiesta, in questo caso il tempo di risposta del server dovrebbe aumentare ad ogni richiesta proprio perchè il server deve processare più dati ad ogni richiesta dato che l’utente è valido e passa al processare la password.

Ecco un esempio con l’username valido:

Nel primo caso con password corta il tempo di risposta è intorno ai 100 ms, mentre nel secondo caso con password lunga il tempo è di 423 ms, questo indica che l’utente esiste perchè se avessimo inserito il nome utente sbagliato indifferentemente dalla lunghezza della password la risposta sarebbe stata intorno ai 70 ms.

Ora che sappiamo che il server è vulnerabile possiamo enumerare gli utenti mettendo una wordlist per gli utenti e una password lunghissima, se un utente esiste avrà un tempo di risposta molto superiore rispetto a tutti gli altri.

Tramite intruder ho effettuato un attacco PitchFork perchè c’era anche il problema del blocco all’indirizzo IP che è facilmente bypassabile aggiungendo X-Forwarded-For all’header:

Il risultato è il seguente che come puoi notare ha l’utente antivirus con un tempo di risposta di molto superiore rispetto agli altri, infatti se con il reapeter testiamo il tempo di risposta aumentando la lunghezza della password ogni volta il tempo aumenta il che indica la sua esistenza.

Ora che abbiamo l’username possiamo trovare la password, ma per la password non guarderemo il tempo di risposta, guarderemo il codice di risposta che per le credenziali corrette dovrebbe essere 302 (reindirizzamento).

Come puoi notare le credenziali antivirus e harley sono corrette e le possiamo utilizzare per autenticarci.