
POC mejorado para CVE-2022-1388 que afecta a múltiples productos F5.
POC mejorado para CVE-2022-1388 que afecta a múltiples productos F5.
Esta es una versión mejorada de la prueba de concepto de Horizon3 para CVE-2022-1388: https://github.com/horizon3ai/CVE-2022-1388
También es una reelaboración completa con refactorización del trabajo de PsychoSec por https://github.com/PsychoSec2/CVE-2022-1388-POC
LOL este tipo mencionó en la sección Requirements un punto como brains y tiene un +40% de código duplicado y absolutamente no escalable.
El bloque de sesión también se eliminó, ya que no le veo mucho sentido aquí.
Esta versión contiene múltiples mejoras, así como una shell interactiva para ejecutar comandos remotos.
El análisis técnico de la causa raíz de la vulnerabilidad de Horizon3 se puede encontrar en su blog: https://www.horizon3.ai/f5-icontrol-rest-endpoint-authentication-bypass-technical-deep-dive/
Condiciones necesarias de una solicitud para explotar esta vulnerabilidad:
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
Probando un objetivo:
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 la opción -s para ejecutar una shell interactiva. Shell interactiva:
python3 cve-2022-1388-1veresk.py -u -s https://192.168.0.221
Running interactive shell..
root@f5-localhost: /var/service/restjavad$
Dose not require the use of any reverse tcp connection or listeners.
Use 'exit' command to exit the shell...
Ten en cuenta que, al ejecutar la shell interactiva en un sistema sin parchear, ciertos comandos y sintaxis podrían no funcionar o no darte el resultado esperado. Esto probablemente se deba al uso de JSON en las solicitudes y respuestas de la API del servidor. Para evitar problemas, intenta no usar caracteres comunes de la sintaxis JSON, como comillas dobles, dos puntos, comas, llaves y corchetes, al usar la shell interactiva. Cualquier sintaxis JSON debe estar en un formato estructurado.
El uso de cualquier tipo de sintaxis JSON no estructurada dentro de un comando podría provocar una solicitud API malformada al servidor y podría dejarte con: ninguna salida de comandos, nada ejecutado, o podría expulsarte por completo del script de Python. Esto, lamentablemente, inutiliza algunos comandos. Para solucionar este problema, en su lugar puedes escribir un script bash, descargarlo al servidor y ejecutarlo usando la shell interactiva. Tampoco es posible cambiar de directorio usando el comando 'cd'.
En cualquier caso, aún deberías poder obtener una salida básica de comandos. Si no obtienes ninguna salida de comandos, no significa que el comando no se haya ejecutado. Sin embargo, tendrías que averiguarlo mediante tu propio análisis.
Actualiza a la última versión o mitiga siguiendo las instrucciones del aviso de seguridad de F5
Este software ha sido creado exclusivamente con fines de investigación académica y para el desarrollo de técnicas defensivas eficaces, y no está pensado para ser utilizado para atacar sistemas, salvo en los casos en que se cuente con autorización explícita. Los mantenedores del proyecto no son responsables del uso indebido del software. Úsalo de manera responsable.
Eres libre de contactarme vía Keybase para cualquier detalle.