CVE-2025-56154CVE-2025-56154 是 htmly 内容管理系统 v3.0.8 版本中存在的一个反射型跨站脚本(Reflected XSS)漏洞。该漏洞位于应用程序的 /author/:name 端点,攻击者可以通过构造恶意的 URL,将包含 JavaScript 代码的 payload 注入到 name 参数中。由于服务端未对用户输入进行充分的过滤和转义处理,恶意脚本将直接被反射回受害者的浏览器中执行。
htmly 是一款轻量级的 PHP 开源博客/内容管理系统,因其简洁易用而受到部分个人站长和小型团队的青睐。该漏洞的存在使得攻击者能够在受害用户的浏览器上下文中执行任意 JavaScript 代码,可能导致用户会话劫持、敏感信息窃取、钓鱼攻击、恶意页面重定向等一系列安全问题。CVSS 3.1 评分为 6.1 分,属于中危级别。虽然该漏洞需要用户交互(UI:R)才能触发,但由于无需任何认证(PR:N)且可通过网络远程利用(AV:N),其潜在威胁仍然不可忽视。
该漏洞已于 htmly v3.0.9 版本中修复,修复方式为对 name 参数进行了适当的 HTML 实体编码和输入过滤。建议所有使用 htmly v3.0.8 及更早版本的用户尽快升级至最新版本以消除安全隐患。
该漏洞属于典型的反射型 XSS(Reflected Cross-Site Scripting),其根本原因在于 htmly v3.0.8 的 /author/:name 路由处理逻辑中,未对用户通过 URL 路径传入的 name 参数进行充分的输出编码和输入验证。
从技术层面分析,当用户访问类似 https://target.com/author/<script>alert(document.cookie)</script> 的 URL 时,服务端将 name 参数的值直接嵌入到返回的 HTML 页面中,而没有对尖括号、引号等特殊字符进行 HTML 实体编码(如将 < 转换为 <)。这导致攻击者注入的 HTML 标签和 JavaScript 代码能够被浏览器正常解析和执行。
利用方式上,攻击者首先需要构造一个包含恶意 JavaScript payload 的 URL。由于该漏洞无需认证即可触发,攻击者可以通过社交工程手段(如钓鱼邮件、即时通讯消息、论坛帖子等)诱导受害者点击恶意链接。一旦受害者点击链接,其浏览器将在 htmly 网站的上下文中执行攻击者注入的脚本,攻击者可以借此窃取用户的 Cookie、会话令牌,或者通过 DOM 操作伪造登录表单进行钓鱼攻击。此外,攻击者还可以利用该漏洞进行恶意重定向,将受害者引导至含有恶意软件的网站。
修复方面,htmly v3.0.9 版本通过在模板渲染层面对 name 参数进行 HTML 实体编码(如使用 htmlspecialchars() 函数)来阻止恶意脚本注入。同时增加了输入白名单校验,限制 name 参数仅接受合法的字符集。