
パッチ適用済みのwordpress RCE脆弱性(CVE-2026-60137およびCVE-2026-63030)の分析とエンドツーエンド実装

すべてのPoCは、RESTバッチルート混乱(CVE-2026-63030)とauthor__not_in SQLインジェクション(CVE-2026-60137)の2つのバグを、同一の二重入れ子バッチ形状で武器化しています。各PoCの違いは、選択されたRCEパス、環境前提条件、および安全デフォルトにあります。このドキュメントでは、このリポジトリの実装がその状況においてどこに位置するかを具体的に示します。
checkは、明示的に指定されない限りSQLペイロードを送信しません。すべてのトラフィックに属性タグを付与可能で、shellコマンドがターゲットに書き込むものはすべて自動的に後で削除されます。§3を参照。| 機能 | このリポジトリ | Icex0/wp2shell-poc | sergiointel/wp2shell-poc | 0xsha/wp2shell | OUTFILE variant [4] |
|---|---|---|---|---|---|
| 事前認証ブラインド/タイミングSQLi読み取り | はい | はい | はい (タイミング) | はい | はい |
| インバンドUNION読み取り (1リクエスト/値) | はい | はい | - [1] | - [1] | - |
| エラーベース読み取り (EXTRACTVALUE) | はい | はい | - | - | - |
| UNIONチャネルが永続オブジェクトキャッシュを生き残る | はい (ベースセット空) | いいえ - プローブが偽陰性 [2] | 文書化されていない | いいえ - 文書化された前提条件 [3] | 該当なし [5] |
| クラック不要の事前認証RCE | はい (SQLiから管理者へのブリッジ) | はい (同じブリッジ) | はい (ブリッジの起源) | はい (同じブリッジ) | はい、INTO OUTFILE経由 [5] |
| RCEの追加前提条件 | デフォルトインストール以外はなし | なし (非オブジェクトキャッシュホスト) | なし (同上) | なし (同上) | MySQL FILE権限 + mysqldと共有可能なWeb書き込み可能パス |
| 非破壊的チェック/パッチ検証 | はい (マーカートリプレット、デフォルトでペイロードなし) | はい | いいえ | はい (block_cannot_read) | はい (マーカーバッチ) |
| 属性/User-Agentタグ付け | はい、すべてのコマンドで | いいえ | いいえ | トランスポートフラグ | いいえ |
| 自動クリーンアップ (ウェブシェル + 生成された管理者) | はい | はい | 文書化されていない | トークンゲート式ウェブシェルのみ | ドロッパー削除 [5] |
| ブルーチーム向け検出ガイド | はい、本番実行から | いいえ | いいえ | ラボマトリックスの代わり | 緩和策メモ |
| 依存関係 | stdlibのみ | stdlibのみ | 単一ファイル | stdlibのみ、単一ファイル | Python ≥3.10パッケージ |
[1] 読み取りチャネルとしてはタイミング/ブラインドのみ。ブリッジ内にUNION偽造投稿プリミティブは存在するが、抽出オラクルとして公開されていない。
[2] 単純な可用性プローブ(0) UNION SELECT ...)はオブジェクトキャッシュのハイドレーション中に黙ってドロップされ、available()はfalseを返し、事前認証ブリッジ全体が中断される。§1参照。
[3] プロジェクト自身のREADMEが「永続オブジェクトキャッシュなし(Redis/Memcached)」を前提条件として挙げている。
[4] Sploitusでミラーリングされている公開バリアント(下記リンク):ブラインド読み取り + INTO OUTFILEドロッパーをRCEステップとして使用し、per_page=-1カテゴリキャリアを使用。
[5] OUTFILE RCEパスは偽造投稿レンダリングに依存しないため、オブジェクトキャッシュはそれをブロックしない。代わりにMySQL FILE権限と共有書き込み可能ディレクトリがブロックする。マネージドホスティングでは、WordPress DBユーザーにFILEが許可されることはほとんどなく、secure_file_privが一般的に設定されている。
UNION偽造投稿プリミティブは、WP_Queryが行を返す方法に依存します。
wp_postsの行全体を返します。UNIONで注入された行は直接WP_Postになります。偽造がレンダリングされます。永続オブジェクトキャッシュがあるホストでは、ベースセットが入力された結果セットがWP_Queryを分割モードに押し込みます。公開PoCで使用される標準プローブ -
0) UNION SELECT <偽造行> -- -
post_author NOT IN (0)はすべての行に一致)。そのため、オブジェクトキャッシュの背後では偽造行が消失します。可用性プローブが偽陰性を示し、available()がfalseを返し、事前認証ブリッジ全体が実際には完全に悪用可能なホストに対して「死んでいる」と報告されます。公開統合ツールは、*「永続オブジェクトキャッシュなし」*をハードな前提条件として挙げることで、同じ境界を文書化しています。このリポジトリは代わりにベースセットを空にします:
1) AND 1=0 UNION ALL SELECT <偽造行> -- -
ベース行がゼロの場合、偽造行は唯一の行です。クエリは全行モードのままです。ハイドレーションルックアップは決して実行されません。注入された1つのキーワード(AND 1=0)が、オブジェクトキャッシュホストでの「UNIONチャネルが死んでいる」と「完全な事前認証RCE」の間のすべての違いです。そしてオブジェクトキャッシュホストは、マネージドWordPress本番環境の大多数を占めています。診断、プローブマトリックス(per_page × 注入形式)。
範囲に関する注:ブラインド/タイミング読み取りチャネルはオブジェクトキャッシュに影響を受けません(SQL内の行を数えることは偽造投稿のハイドレーションを伴わない)。したがって、すべてのPoCのブラインド読み取りはどこでも機能します。他のPoCでオブジェクトキャッシュが殺すのは、具体的にはUNION依存部分です:インバンド抽出とSQLiから管理者へのブリッジ。
ケーススタディで文書化された2つ目の関連教訓:両方のチャネルが機能する場合、インバンドUNION読み取りを信頼できるものとして扱うこと。本番タイミングオラクルは、インバンド読み取りが明確に確定した値に対して、ジッタの下でビット反転を生成しました。
公開PoC全体で3つの事前認証RCEパスが存在します:
| パス | 使用元 | 追加前提条件 |
|---|---|---|
SQLiから管理者へのブリッジ(oEmbed/changeset/nav行を偽造→POST /wp/v2/users→ログイン→プラグインアップロード) | このリポジトリ、sergiointel(起源)、Icex0、0xsha | デフォルトインストール以外はなし |
INTO OUTFILEドロッパー(SQLi経由でPHPファイルを書き込み、フェッチしてシェルにする) | OUTFILE variant [4] | MySQL FILE権限、それを許可するsecure_file_priv、およびmysqldが書き込み可能かつWebサーバーが提供するディレクトリ |
ハッシュ復元→クラック→ログイン(user_passをダンプ、オフラインでクラックし、プラグインアップロード) | すべて(フォールバックとして) | bcryptハッシュが実際にクラックされる必要がある($wp$2y$、hashcat -m 35500)- 遅く、しばしば成功しない |
このリポジトリはブリッジを実装しています。WordPressがすでに持っている以上のデータベース権限を必要とせず、DBとWeb層が何も共有しない場合でも機能し、FILE権限パスに依存するファイルを残しません。トレードオフは複雑さです。ブリッジは7行の毒された投稿グラフです。これはまさに、§1のオブジェクトキャッシュ偽陰性がかつてこのパスを隠していた場所です。
ラボだけでなく、承認された状態で本番システムに対して実行するために構築されています:
checkはデフォルトで非破壊的 - 受動的フィンガープリントと良性のマーカーバッチ。--confirm-sqliが指定されない限り、SQLペイロードは送信されません。パッチ適用後、消えるマーカートリプレットは修正検証としても機能します。--user-agentがすべてのコマンドにあり、すべてのエクスプロイトトラフィックがログで識別可能になります(公開ツールがデフォルトにしないエンゲージメントの経験則)。author_exclude → author__not_inシンク、偽造WP_Post UNIONプリミティブ、カスタマイザーブリッジの概念はすべて公開技術です(系統は以下で認められています)。INTO OUTFILEドロッパー)、Sploitusでミラーリング - https://sploitus.com/exploit?id=7CD079AD-E27B-5C54-A696-60635BFDB241