
Questo è l'exploit di CVE-2019-17240.
Le versioni del CMS Bludit precedenti e inclusa la 3.9.2 sono vulnerabili a un bypass del meccanismo anti-forza bruta, che ha lo scopo di bloccare gli utenti che hanno effettuato 10 o più tentativi di accesso non riusciti.
La vulnerabilità è stata scoperta da Rastating.
L'invio di una richiesta di accesso con un valore dell'header X-Forwarded-For costituito da una stringa variabile (stringa spoofata) è stato elaborato con successo, e il tentativo di accesso fallito è stato registrato a nome della stringa spoofata.
Lo script qui sopra utilizza questa vulnerabilità per bypassare il meccanismo anti-forza bruta.
Nel corpo della pagina di accesso sono presenti token CSRF, quindi prima di ogni richiesta POST con le credenziali è necessario recuperare il token CSRF dal sorgente dell'ultima risposta.
Un modo per farlo è effettuare una richiesta GET, recuperare il token CSRF e inviare una richiesta POST con le credenziali e il token recuperato, ripetendo finché non si trova la password; è quello che ho visto nella maggior parte degli script.
L'altro modo è recuperare il token CSRF dalla risposta dell'ultima richiesta POST, quindi solo per la prima volta è necessario effettuare una richiesta GET.
Il secondo metodo è molto più veloce del primo, e un po' più di efficienza incide molto quando si tratta di attacchi di forza bruta in cui è necessario effettuare molte richieste.
Ho provato entrambi i metodi e con il secondo sono riuscito a testare 63 parole in 1 minuto, mentre con il primo solo 19 parole.
python3 brute.py -u [url] -user [username] -w [pathToWordlist] [-t [threads to use]]
python3 brute.py -u https://192.168.10.13/ -user admin -w sysadmin -t 30
