Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

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

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

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
xss2shell-check — CVE-2026-64638 (XSS2Shell) 的非破坏性检测器 — WordPress 预认证 XSS 反射原语 | Kitploit
工具/GitHubGitHub/sanaullahamanullah/xss2shell-check
防御工具漏洞扫描器Web漏洞扫描器漏洞分析信息收集Web安全渗透测试
GitHubsanaullahamanullah/xss2shell-check

xss2shell-check

CVE-2026-64638 (XSS2Shell) 的非破坏性检测器 — WordPress 预认证 XSS 反射原语

查看仓库
3天前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

xss2shell-check

针对 WordPress wp-login.php 中 CVE-2026-64638("XSS2Shell") 反射原语的非破坏性、零依赖检测器。

背景

CVE-2026-64638 是 WordPress 核心中的一个预认证反射型 XSS 漏洞,由 PWN.AI 于 2026-08-07 披露(CVSS 8.9,CWE-79),已在 7.0.3 中修复,并向后移植到所有受维护的分支(6.9.6、6.8.7、6.7.6、6.6.6、6.5.9 等)。

根本原因是 PHP 的 strip_tags() 与 WordPress 的 KSES 清理器之间的解析器差异:

  • strip_tags() 在 < 后出现空白字符时拒绝识别标签,因此 像 < area id=x> 这样的用户名会以纯文本形式保留。
  • KSES 没有此类规则,并会在登录错误消息中把该文本重新解析为 活跃的 <area id="x"> 元素。

这会产生带有攻击者指定 id/class/href 属性的 DOM 注入——这是已公开的 多阶段攻击链背后的原语(DOM 污染 → REST JSONP → 应用密码窃取 → 插件上传 → 针对已登录管理员受害者的 RCE)。

本工具的功能

两个非破坏性探测(使用随机标记用户名进行的一次失败登录):

  1. RAW_HTML — <b>marker</b> 以未转义形式出现在错误响应中。
  2. AREA_BYPASS — < area id=marker> 绕过 strip_tags() 并作为活跃/规范化元素 (例如 area id="marker")重新出现在响应中。

没有任何有效载荷会被执行;该工具仅检测攻击者提供的 HTML 是否被渲染为活跃 DOM。 可选附加功能:

  • --version — 通过 feed 的 <generator> 标签识别核心版本。
  • --jsonp — 验证已发布攻击链所使用的 REST JSONP 封装(_jsonp/_envelope)是否可达。

使用方法

root@kitploit:~
python3 xss2shell_check.py https://example.com
python3 xss2shell_check.py --jsonp --verbose https://example.com
python3 xss2shell_check.py --version https://example.com
python3 xss2shell_check.py --json https://example.com

需要 Python 3.6+,仅使用标准库,无任何依赖。

退出码

代码含义
0存在漏洞(反射原语存在)
1已修补 / 不存在漏洞
2错误(无法访问、WAF 质询、意外响应)

检测矩阵

检测说明

  • 漏洞特征是被规范化的元素(<area id="…">)。 属性引号的写法因 KSES 代次而异(旧版自定义解析器: <area id=x>;DOMDocument:<area id="x"> / <area id="x" />),因此 会匹配所有形式。原始 < area …> 透传未经过重新解析时, 在浏览器中只是惰性文本而非原语——它会被报告为 RAW_TEXT_ONLY,不会触发误报。
  • 版本标签仅供参考:已修补的后向移植版本(6.9.6、6.8.7、 6.7.6、6.6.6、6.5.9、4.7.34 等)落在 4.7.0–7.0.2 系列内部, 已按分支逐一说明;反射检测仍然是权威依据。
  • 请求:1 个 GET(登录页面——同时捕获 WAF/粘性 Cookie 以及 重定向后的实际 URL)+ 2 个带唯一随机标记的 POST。 POST 重定向会以 POST 方式重新发出。WAF 拦截表现为退出码 2, 而不是无声的"不存在漏洞"。
  • 如果自定义的 login_errors 过滤器或 CDN/WAF 重写了响应,或者登录错误从不回显用户名,则可能出现漏报。

免责声明

仅限经授权的安全测试。本工具仅用于测试您拥有或已获得明确书面许可评估的系统。 未经授权的测试在大多数司法管辖区属于违法行为。

参考资料

  • Criminal IP — WordPress 漏洞 CVE-2026-64638:从登录页面 XSS 到服务端代码执行
  • CUHK ITS — WordPress 预认证 XSS 漏洞 "XSS2Shell"(CVE-2026-64638)

许可证

MIT

下载工具
Flag用途
--version识别核心版本(feed generator 标签,主页 meta 作为后备)
--jsonp同时验证 REST JSONP 封装(_jsonp/_envelope)是否可达
-v, --verbose打印探测响应片段(用于报告的取证)
--json机器可读的 JSON 结果(CI / 自动化)
观察到的行为判定退出码
<b>marker</b> 以未转义形式回显RAW_HTML — 存在漏洞0
< area id=marker> 被重新解析为活跃的 <area id="marker">(任意引号 / 空元素形式)AREA_BYPASS — 存在漏洞0
用户名被 HTML 转义ESCAPED — 不存在漏洞1
标签被剥离,文本保留STRIPPED — 不存在漏洞1
原始 < area …> 透传但从未被重新解析RAW_TEXT_ONLY — 惰性文本,不存在漏洞1
完全没有回显NOT_REFLECTED — 不存在漏洞1
探测被阻止(HTTP ≥ 400 / 质询页面)或目标无法访问ERROR2