
Rileva in modo sicuro se un'istanza FortiGate SSL VPN è vulnerabile a CVE-2023-27997 basandosi sui tempi di risposta.
Rileva in modo sicuro se un'istanza FortiGate SSL VPN è vulnerabile a CVE-2023-27997 basandosi sui tempi di risposta. Vedi il rapporto completo sul blog di Bishop Fox, inclusa una guida completa della metodologia alla base di questo strumento.
CVE-2023-27997 è un buffer overflow basato su heap nel componente SSL VPN di FortiGate che è stato dimostrato essere sfruttabile per RCE pre-autenticazione. Poiché si tratta di un bug di corruzione della memoria, vogliamo essere in grado di rilevare versioni vulnerabili senza far crashare il processo sslvpnd e disconnettere gli utenti attivi.
Questo strumento invierà 800 richieste al percorso URL vulnerabile. Metà delle richieste avranno una lunghezza non valida e quindi verranno rifiutate dalle versioni più recenti di FortiGate; questo crea una differenza di tempo misurabile (circa 250 microsecondi sui nostri dispositivi durante i test) tra richieste con lunghezza valida e non valida, che possiamo rilevare usando un po' di matematica.
I campi della dimensione della richiesta e della lunghezza dei dati sono scelti specificamente in modo che, sui dispositivi vulnerabili, la corruzione della memoria interessi solo aree dell'heap in cui non ci sono dati in uso. Questo garantisce che il processo SSL VPN non vada in crash.
$ git clone https://github.com/BishopFox/CVE-2023-27997-check
$ cd CVE-2023-27997-check
$ python3 -m venv venv
$ source venv/bin/activate
$ python3 -m pip install -r requirements.txt
Esegui la scansione della SSL VPN su https://<IP>:<PORT>. Il target può restituire lo stato Vulnerabile, Corretto, o Sconosciuto. La scansione di solito si completa in meno di 30 secondi, ma a causa dell'elevato numero di richieste inviate, potrebbe richiedere fino a 5 minuti in alcune circostanze.
$ python3 CVE-2023-27997-check.py <IP> <PORT>
Nell'esempio seguente, example.com:10443 è vulnerabile a CVE-2023-27997.
$ python3 CVE-2023-27997-check.py example.com 10443
Checking https://example.com:10443
Vulnerable
Nota che questo strumento si basa su informazioni temporali misurate su Internet, che sono soggette a rumore. Lo strumento ti avviserà quando i risultati potrebbero essere errati.
$ python3 CVE-2023-27997-check.py example.com 10443
Checking https://example.com:10443
WARNING: Low confidence results.
Patched
$ python3 CVE-2023-27997-check.py example.com 10443
Checking https://example.com:10443
WARNING: Low confidence results.
Unknown
Se visualizzi WARNING: Low confidence results, considera di ridurre il rumore di Internet utilizzando un VPS geograficamente il più vicino possibile al server di destinazione.
L'uso di questo strumento per attaccare target senza previo consenso reciproco è illegale. È responsabilità dell'utente finale rispettare tutte le leggi locali, statali e federali applicabili. Gli sviluppatori non si assumono alcuna responsabilità e non sono responsabili per qualsiasi uso improprio o danno causato da questo programma.