Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
cve-2026-111497-wordpress-poc — WordPress向けに固定されたDocker公式イメージ1件に対するCVE-2026-111497のRCE PoC | Kitploit
ツール/GitHubGitHub/caveeroo/cve-2026-111497-wordpress-poc
コンテナセキュリティペイロード生成脆弱性分析エクスプロイトウェブアプリケーション悪用暗号化
GitHubcaveeroo/cve-2026-111497-wordpress-poc

cve-2026-111497-wordpress-poc

WordPress向けに固定されたDocker公式イメージ1件に対するCVE-2026-111497のRCE PoC

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
リポジトリを見る
32120時間23分前未レビュー

CVE-2026-111497: 固定されたWordPressイメージのRCE PoC

このソースのみのPoCは、固定されたDocker公式WordPressイメージ1つに対して、未認証のコマンド実行を再現します。

1回のpingback.pingリクエストにより、WordPressは同一のPHPリクエスト中に攻撃者のURLを2回取得します。最初のレスポンスがBrotliを介してPHPハンドラを破壊します。リトライヘッダがBashを起動し、ラボのフラグを返します。

このプロファイルはターゲット固有です。現在のWordPressイメージ、他のダイジェスト、あるいはWordPress Coreのメモリエラーについて何ら主張するものではありません。

警告: このPoCは、所有するシステム上の同梱ラボでのみ実行してください。動作するRCEペイロードを含みます。

結果

  • 1回の未認証の受信リクエストが2回の送信リクエストを引き起こします。
  • Bashが新しい/flag.txtを読み取り、フラグがXML-RPCレスポンスで返されます。
  • Linux ASLRモード2とデフォルトアロケータは有効なままです。
  • このチェーンは、リーク、リクエスト間のグルーミング、デバッガ、プリロードライブラリ、プラグイン、ハンドラの直接シードのいずれも使用しません。
  • 観測モードはshからbash、sleepへのプロセスチェーンを記録します。
  • 1ビットセレクタ制御は、フラグを露出させることなくリトライに到達します。

正確なターゲットとメカニズム

項目値
ターゲットdocker.io/library/wordpress@sha256:806680ba62232c4c300fb9dcc9f89d08e9e8c2bfc59837a1f58716f8648306d5
イメージIDc64dd89c00079939f18d70489e7c3e30cb071e8581824ab2de688f9f4d70d076
プラットフォームLinux amd64、Debian 13.7
アプリケーションWordPress 7.1.3、Apache 2.4.69 prefork
ランタイムPHP 8.3.36 NTS
デコーダlibbrotli1:amd64 1.1.0-2+b7

このLinux/amd64マニフェストは、公開当時にwordpress:latestによって選択されていました。現在のlatestタグはもはやこれを選択しません。

ラボはこの未改変のDocker公式イメージをrootless Podmanで実行します。Brotliライブラリを注入することはありません。

CVE-2026-111497がデコーダの破壊を提供します。WordPressがpingback.pingを介して未認証の取得経路を提供します。

不正なストリームは、稼働中のsystemハンドラポインタからstrtolowerハンドラへ6バイトをコピーします。両方のポインタは同じASLRでロードされたlibphp.soベースを使用します。したがって、このプロファイルは絶対アドレスのリークを必要としません。

このプロファイルは依然として、正確なBrotli、PHP、glibc、cURL、Requests、Apache、アロケータ、およびリクエスト履歴に依存します。最初のレスポンスは161バイトのヘッダと23,069,816バイトのボディを使用します。オリジンは23,069,752バイトを送信し、1秒待機してから最後の64バイトを送信します。

デコーダは破壊後にエラーを返します。RequestsはCURLE_BAD_CONTENT_ENCODINGの後にコンテンツデコードなしでリトライします。その最初のヘッダ名が改変されたハンドラに到達し、固定のBashコマンドを起動します。

アプリケーション経路には以下の条件が必要です:

  • /xmlrpc.phpに到達可能で、pingback.pingが有効であること。
  • 投稿が存在し、ピンバックを受け付けること。
  • WordPressが攻撃者制御のURLを取得できること。
  • cURLトランスポートがBrotliレスポンスをデコードすること。

ラボはプラグインや被害者側の計装なしでこれらの条件を作り出します。

ソースと要件

generate_payloads.pyが権威あるペイロードソースです。リポジトリはビルド済みのペイロードバイナリを追跡していません。

ジェネレータはPython標準ライブラリのみを使用します。オフラインで動作し、トラフィックを送信したりコマンドを実行したりしません。RFC 7932からプロファイル定数とシリアライゼーションステージを定義します。

verify.shはすべてのフラグメントを再生成します。それらのサイズ、ハッシュ、中間ビットオフセット、および1ビットセレクタの関係を検証します。

テスト済みのホストは、amd64上のWSL2でUbuntu 24.04.4を使用しました。rootless Podman 4.9.3、Bash 5.2.21、Python 3.12.3を使用しました。

最小要件は、Linux amd64、rootless Podman、Bash、Python 3.8以降、ASLRモード2、および標準GNUユーザーツールです。ポート18170とサブネット93.184.218.0/24を空けておくか、代替を選択してください。SELinuxが強制モードのホストはバインドマウントを拒否する可能性があります。

ラボを実行する前に、不変イメージをプルしてください:

podman pull docker.io/library/wordpress@sha256:806680ba62232c4c300fb9dcc9f89d08e9e8c2bfc59837a1f58716f8648306d5
podman pull docker.io/library/wordpress@sha256:65d5f185a6f539803a177ea9cdd5ad632ae24427bea114447e67a6fcd5d8bfe8
podman pull docker.io/library/mariadb@sha256:33a6653ab666774f48818120045f9367a81cd4c54c027412fe294a7d1274e2dc

プルーフを実行する

スクリプトを実行可能にし、その後ソースパッケージを検証します:

chmod +x generate_payloads.py verify.sh run.sh
./verify.sh

新しいタグを付けて各モードを実行します:

モードコマンド期待される結果
Positive./run.sh standardフラグを返し、PoC positive: を出力する
Observable./run.sh observableさらに、可視の bash および sleep プロセスを記録する
Selector./run.sh selectorリトライするが、フラグをレスポンスに含めない

セレクタはバイトオフセット1066の1ビットを変更します。これは同一イメージ内の因果的コントロールであり、固定デコーダのコントロールではありません。

オプション引数はモード、タグ、ホストポート、および第3ネットワークオクテットです:

./run.sh standard trial2 18171 219

ランナーは証拠を runs/<tag>/ に書き込みます。主要なファイルは次のとおりです:

  • VERDICT.txt: 結果とリクエスト数
  • client-request.raw と client-response.raw: 受信したワイヤデータ
  • origin-evidence/origin-events.json: 送信リクエストとリトライヘッダーの両方
  • oracle-match.txt: レスポンス内のフラグ一致
  • payloads/identity.json: 生成されたプロファイルのメタデータ
  • MANIFEST.sha256: すべての証拠ファイルのハッシュ

安全性と制限

ランナーは内部の Podman ネットワークを使用し、WordPress を 127.0.0.1 でのみ公開します。クライアントはターゲットアドレスを受け付けません。オリジンはコマンド入力を受け付けません。固定コマンドは合成フラグのみを読み取ります。

ランナーは Apache が起動する前に、Apache の環境からフラグ値を削除します。また、新しい認証情報を作成し、現在の実行のリソースのみを削除します。

レスポンスの分割とプロセス履歴はエクスプロイトの入力です。実行が失敗した場合は、変更していないプロファイルを新しいタグで繰り返してください。失敗した実行の後にアドレスやペイロードのバイトを調整しないでください。

このパッケージは、イメージダイジェスト、PHP ビルド、アーキテクチャ、アロケータ、レスポンススケジュールにわたる移植性を確立するものではありません。異なるターゲットでは実行が停止するか、クラッシュのみが発生する可能性があります。

緩和策

  • 影響を受ける Brotli パッケージまたはイメージを、ベンダーが修正したビルドに置き換えてください。
  • 古いデコーダを読み込んだすべてのプロセスを再起動または再デプロイしてください。
  • 更新が完了するまで、信頼できない Brotli デコード経路を削除し、未使用の XML-RPC pingback を無効にしてください。

アップストリームは、メンテナンスされている Brotli ブランチを 1.0.10、1.1.1、1.2.1 で修正しました。ディストリビューションのベンダーは修正をバックポートできます。表示されているバージョンだけでなく、ベンダーのアドバイザリとパッケージの変更履歴を使用してください。

参考資料

  • GitHub アドバイザリ GHSA-9v8h-qqgm-4m35
  • Google Brotli 1.2.1 セキュリティリリース
  • アップストリームのデコーダ修正
  • WordPress pingback_ping() リファレンス
  • WordPress wp_safe_remote_get() リファレンス
  • dimasma0305/CVE-2026-111497-POC(以前の公開 PoC)
ツールをダウンロード