更新:CVE-2026-63030(wp2shell)的公开PoC现已可用

admin 2026-08-25 05:00:00 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 公开资料显示CVE-2026-63030(wp2shell)漏洞的PoC现已可用。该漏洞利用WordPressRESTAPI批量路由混淆实现未经身份验证的SQL注入,并可通过SQL注入到管理员桥接实现远程代码执行。PoC工具支持漏洞检查、数据读取和命令执行。建议用户尽快检查并修复此漏洞。 综合评分: 89 文章分类: 漏洞分析,恶意软件,威胁情报,安全工具,漏洞预警


更新:CVE-2026-63030 (wp2shell) 的公开 PoC 现已可用

Ots安全

2026年7月20日 19:29 广东

在小说阅读器读本章

去阅读

威胁简报

恶意软件

漏洞攻击

针对 Searchlight Cyber 发布的 wp2shell 安全公告中提及的未经身份验证的 WordPress REST 批量路由混淆 SQL 注入漏洞,进行了独立的概念验证。

此存储库并非 Searchlight Cyber 的官方检查器。check它确认 SQLi 路径, read演示数据库读取,并shell通过提供的管理员凭据或首先执行 SQLi 到管理员桥接来打开插件支持的命令 shell。

工作原理

REST 批处理端点(/batch/v1)未经身份验证,在一次调用中运行多个子请求,依赖于每个子请求本身的验证和权限检查。

serve_batch_request_v1()它会构建两个并行数组—— $matches(每个子请求的匹配处理程序)和$validation(每个子请求的验证结果)——然后在分发时使用相同的偏移量对这两个数组进行索引。路径失败的子请求wp_parse_url()会被添加到 “匹配处理程序”数组中$validation,但不会添加到$matches“验证结果”数组中,因此这两个数组的索引顺序不一致,导致子请求被分发到不同的处理程序下。这就是路由混淆的原因。

该概念验证将基本元素嵌套了两次:

  1. POST /wp/v2/posts带有请求体的请求会requests直接由批处理程序处理。由于它已被验证为 POST 请求,因此其requests请求体列表不会与批处理模式进行比对,所以其子请求可以使用GET允许列表方法,该方法会被绕过。
  2. 在该内部批次中,一个GET /wp/v2/posts/999999item-route 请求携带 posts 集合查询参数,例如author_exclude<post\_id> orderby<post\_id><post\_id> per\_page。ID999999不需要存在;它只是一个不太可能存在的帖子 ID,用于匹配 item-route,该路由的模式不会验证这些仅限集合使用的参数。然后,desync 会将相同的请求分发到 posts 下 get_items(),其中author_exclude<post\_id> 映射到WP_Query author__not_in查询变量,易受攻击的构建会将该变量作为字符串插入到 SQL 中。

最终结果是实现了基于布尔值和时间的盲注 SQL 注入,且该注入可在身份验证之前进行。此概念验证还包含了 SQL 注入到管理员请求链中使用的 UNION 伪 POST 原语。

此处实现的远程代码执行路径为:

  1. 使用 UNION 伪造wp_posts行通过文章集合渲染攻击者控制的内容。渲染桥使用/wp/v2/posts/999999item-route 源——与 SQLi 读取所用的路由相同get_items()。
  2. 使用该渲染图可以让 WordPress 创建真正的 oEmbed 缓存文章。
  3. 通过 SQLi 恢复真实的缓存帖子 ID。
  4. 在一个被污染的批量请求中,将这些 ID 重新定义为自定义更改集、导航项和请求钩子形状。
  5. 让相同的请求到达POST /wp/v2/users,创建一个生成的管理员。
  6. 以生成的管理员身份登录,并使用插件上传行为来运行命令。

步骤 1-5 为身份验证前步骤;命令执行步骤为已验证管理员插件上传。

要求

需要 Python 3.8 及以上版本和标准库,无需第三方依赖。

用法

从仓库目录运行:

./wp2shell.py<command><url>&nbsp;[options]

或者pip install .获取wp2shell你身上的命令PATH。

检查——非破坏性漏洞检查

首先打印被动 WordPress 标记和公共版本提示,然后发送良性批量标记探测。易受攻击的批量实现会返回带有路由混淆标记模式的 HTTP 207 响应,该模式为 parse_path_failed, block_cannot_read, 和rest_batch_not_allowed。

该标记探测基于 WordPress 核心修复。格式错误的///请求会创建 parse_path_failed;一个/wp/v2/posts请求充当允许批量处理的间隔符;该 /wp/v2/block-renderer/…路由不允许批量处理,但block_cannot_read如果匿名访问其处理程序,则会返回;/batch/v1给出rest_batch_not_allowed。在存在漏洞的构建版本中,解析错误会导致批量处理程序数组错位,因此间隔符请求会被分派到块渲染器处理程序下。修复后的构建版本会保持数组对齐,因此精心构造的探测中不应出现这三个请求的模式。

默认情况下,check操作到此结束,不会发送 SQL 注入有效载荷。–confirm-sqli如果您还需要主动 SQL 注入确认,请使用此功能。确认操作会首先尝试 UNION 读取原语,如果 UNION 反射不可用,则回退到配对的定时探测。

这些信号是相互独立的:版本提示仅供参考,标记模式显示路由混乱,并–confirm-sqli表明有效载荷已到达数据库。WAF 可以阻止有效载荷,因此确认失败并不能证明漏洞不存在。

./wp2shell.py&nbsp;checkhttp://target
./wp2shell.py&nbsp;check&nbsp;targets.txt #&nbsp;scan&nbsp;every&nbsp;URLin&nbsp;the&nbsp;file

读取——通过 SQL 注入提取数据

./wp2shell.pyread&nbsp;http://target # server fingerprint
./wp2shell.pyread&nbsp;http://target --preset users # user logins&nbsp;and&nbsp;password hashes
./wp2shell.pyread&nbsp;http://target --query&nbsp;"SELECT @@version"

读取——通过 SQL 注入提取数据默认情况下,提取过程–technique auto会按以下顺序尝试可用方法:

  • union操作WP_Post通过伪造一行数据UNION,并从 REST 响应中读取其标题||HEX(value)||。有效负载使用相同的/wp/v2/posts/999999源路由 orderby=none,因此per_page=500伪造的行会以渲染后的 POST 请求形式保留下来。每个值对应一个请求。
  • 错误— EXTRACTVALUE/UPDATEXML当目标反映 MySQL 错误时,每次请求会泄漏约 15 字节(例如WP_DEBUG_DISPLAYon)。
  • 盲寻——布尔二分查找,每个字符约 8 次请求;将帖子集合 X-WP-Total标头读取为真/假信号,不需要反射值。

强制执行其中一个–technique union|error|blind。这些读取路径不会写入数据库行。

shell——命令执行

使用提供的管理员凭据登录,并使用 WordPress 插件上传行为–user。–passwordshell

在没有凭据的情况下,shell首先运行预身份验证 SQLi 到 admin 桥接程序,以生成的管理员身份登录,然后上传插件 shell。

./wp2shell.pyshell&nbsp;http://target --user admin --password&nbsp;'<recovered>'&nbsp;--cmd id
./wp2shell.pyshell&nbsp;http://target --user admin --password&nbsp;'<recovered>'&nbsp;-i # interactive&nbsp;shell
./wp2shell.pyshell&nbsp;http://target --cmd id #&nbsp;pre-auth bridge
./wp2shell.pyshell&nbsp;http://target -i #&nbsp;pre-auth interactive

shell上传一个插件 webshell(使用随机路径和每次运行的令牌锁定),并打印其路径。上传的 webshell 会自动删除。当预认证桥接创建管理员帐户时,生成的帐户会在 shell 会话结束后自动删除。

项目地址:

https://github.com/Icex0/wp2shell-poc

END

公众号内容都来自国外平台-所有文章可通过点击阅读原文到达原文地址或参考地址

排版 编辑 | Ots 小安

采集 翻译 | Ots Ai牛马

公众号 | AnQuan7 (Ots安全)


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:Ots安全 《更新:CVE-2026-63030 (wp2shell) 的公开 PoC 现已可用》

评论:0   参与:  0