| 字段 | 值 |
|---|---|
| CVE | CVE-2026-96349 |
| 产品 | SiteSkite WordPress 插件 |
| 受影响版本 | ≤ 2.1.8 |
| 修复版本 | 2.2.0 |
| CWE | CWE-94 — 代码生成控制不当 |
| CVSS | 10.0(严重) — Patchstack 公告 |
| PoCbit 目录 | https://pocbit.org/pocs/ |
| PoCbit 页面 | https://pocbit.org/pocs/cve-2026-96349 |
| 验证标记 | POCBIT-96349-OK |
Python PoC 采用与 CVE-2026-102425 相同的风格:交互式菜单、批量利用(默认)、--check、-u、--lab、线程池、hits.txt / exploited.txt。
Patchstack 和 CVE Program 将 CVE-2026-96349 描述为 SiteSkite 插件中的未认证远程代码执行漏洞。公开文本有意保持简短;厂商修复版本 2.2.0(2026 年 9 月)大量涉及认证和自动登录。本仓库中对 2.1.8 与 2.2.0 的静态对比(extract-2.1.8/、extract-2.2.0/)展示了此 PoC 所实现的实用攻击面。
SiteSkite 是一个大型 WebOps 插件:备份、门户 API,以及站内 AI MCP(“abilities”),其中包括对攻击者提供的 PHP 调用 eval()(siteskite_execute_php)和任意文件写入(siteskite_write_file)的高级工具。当站点通过 SiteSkite API 密钥关联后,这些能力可通过 REST 和 admin-ajax.php 访问。
≤ 2.1.8 中的关键错误在于,同一个长期有效的 API 密钥同时充当未认证的 WordPress 管理员登录持有者:
AutoLoginController 在 /siteskite-autologin 上接受 ?token=<siteskite_api_key>,并通过 handle_token_login() 在任何包含 ?token=… 的前端 URL 上接受该参数。get_option('siteskite_api_key') 的普通相等判断(无门户签名、无一次性 nonce)。wp_set_auth_cookie(),并可选择对 Solid Security 或类似插件绕过 2FA。2.2.0 移除了此路径:原始 API 密钥持有者会被拒绝(hash_equals 检查、“Login Unavailable”),登录需要门户签发的签名链接(AutologinPortalSignature)。mu-plugin 安全核心不再认可旧版密钥登录。
从攻击者的角度来看,利用链如下:
/?token=KEY 或 /siteskite-autologin?token=KEY)证明管理员会话。POST /wp-json/siteskite/v1/abilities/execute(或 admin-ajax.php?action=siteskite_api),携带请求头 X-SiteSkite-Key: KEY,运行 siteskite_execute_php 或通过 siteskite_write_file 投放 up.php → POCBIT-96349-OK。高级 MCP 工具在 2.1.8 中默认开启(McpSettings::DEFAULT_ADVANCED = '1'),因此许多已关联的站点在密钥已知后会暴露 eval。
| 组件 | 2.1.8 行为 | 2.2.0 变更 |
|---|---|---|
includes/Core/AutoLoginController.php | ?token= 等于存储的 API 密钥 → 管理员 cookie | 原始密钥被拒绝;仅限门户 HMAC 登录 |
includes/Mcp/Abilities/AdvancedAbilities.php | siteskite_execute_php → eval($code) | 仍然存在;受认证 + 设置限制 |
includes/Mcp/AbilitiesRest.php | X-SiteSkite-Key → 执行 abilities | 相同接口;自动登录不再在无密钥时泄露会话 |
includes/API/FallbackAPI.php | wp_ajax_nopriv_siteskite_api 在密钥有效时代理 abilities | 仍然需要密钥 / 访客密钥 |
其他未认证的 REST 路由(UploadRest、OAuth 注册)存在,但需要令牌或 PKCE;它们不是此处建模的主要攻击链。
| 文件 | 作用 |
|---|---|
poc.py | CLI / 交互式 / 批量利用 |
_engine.py | HTTP 逻辑、PoCbit 元数据、实验服务器 |
up.php | 可选的 web shell 探测(?pocbit=1 → 标记) |
targets.example.txt | URL 列表;可选 URL<TAB>api_key |
extract-2.1.8/ / extract-2.2.0/ | 用于差异对比的厂商源码(运行 PoC 不需要) |
pip install requests coloramapython poc.py
提示词:mode、可选的全局 API key、目标文件、线程数(默认 16)、超时时间。
exploited.txtpython poc.py fofa_targets.txt
python poc.py urls.txt --key YOUR_SITESKITE_API_KEY
python poc.py urls.txt -t 24 -T 25
每个目标的键(URL 后跟制表符、空格或竖线):
https://customer.example abc123…siteskiteKey…
https://other.site|anotherKey
环境回退:SITESKITE_API_KEY 或 SITESKITE_KEY。
hits.txtpython poc.py --check fofa_targets.txt
指纹:readme.txt Stable tag、旧版 /siteskite-autologin 缺失令牌响应、版本 ≤ 2.1.8。
python poc.py -u https://target.example --check
python poc.py -u https://target.example --key SITE_SKITE_KEY
python poc.py --lab
在 127.0.0.1:8796 上启动带有伪造 readme 2.1.8、自动登录和 abilities 端点的服务;必须返回 "exploited": true。
flowchart LR
A[Target URL] --> B{readme ≤ 2.1.8?}
B -->|no| Z[skip / patched]
B -->|yes| C{API key known?}
C -->|no| N[needs_api_key]
C -->|yes| D[POST abilities/execute]
D --> E{siteskite_execute_php}
E -->|marker| F[RCE verified]
E -->|fail| G[autologin ?token=KEY]
G --> D
E -->|fail| H[write_file / ajax fallback]
H --> F
siteskite_execute_php,内容为 echo POCBIT-96349-OK;route=/abilities/execute)siteskite_write_file → wp-content/uploads/pocbit_96349.phpeval 投放辅助文件 up.phpJSON 结果行包含 pocbit、pocbit_catalog、pocbit_page、CVE URL 以及用于日志管道的 verify_marker。
示例(请根据你的索引器调整):
body="/wp-content/plugins/siteskite/"
header="siteskite" && body="wp-content/plugins"
检查模式不会暴力破解 API 密钥。利用模式需要一个密钥,除非你已从自己的门户或泄露情报中获得了 url\tkey 对。
/siteskite-autologin 的外部访问,并审计日志中针对 ?token= / X-SiteSkite-Key 的滥用行为。仅可在你拥有或已获得书面授权进行测试的系统上使用。未经授权的访问是非法的。
CVE-2026-96349 — WordPress SiteSkite plugin ≤2.1.8 unauthenticated RCE (CVSS 10.0, CWE-94). PoCbit mass-exploit PoC: legacy API-key autologin (?token=) + REST MCP siteskite_execute_php eval chain; fixed in 2.2.0. Check/exploit/mass bulk, hits.txt & exploited.txt, --lab self-test. Marker: POCBIT-96349-OK. Catalog: https://pocbit.org/pocs/cve-2026-96349