IPBUF安全漏洞报告
English
CVE-2026-46360 CVSS 5.4 中危

CVE-2026-46360: phpMyFAQ存储型XSS漏洞

披露日期: 2026-05-15

漏洞信息

漏洞编号
CVE-2026-46360
漏洞类型
存储型跨站脚本 (XSS)
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
phpMyFAQ

相关标签

XSSStored XSSphpMyFAQCVE-2026-46360SVG InjectionBypass

漏洞概述

phpMyFAQ 4.1.2之前的版本存在存储型XSS漏洞。由于SvgSanitizer中的decodeAllEntities()方法对递归实体解码限制为5次,攻击者可以利用深度嵌套的与号编码绕过此限制。拥有FAQ_EDIT权限的认证用户可上传恶意SVG文件,当其他用户查看时,将触发解码并执行任意JavaScript代码。

技术细节

该漏洞的核心在于`SvgSanitizer::decodeAllEntities()`方法的递归深度限制机制。该机制将HTML实体的递归解码次数限制为5次,旨在防止复杂的攻击载荷。然而,攻击者通过构造包含深度嵌套`&`符号的数字HTML实体(例如将`javascript:`中的字符进行多层编码),可以在5次迭代后仍然还原出有效的`javascript:`协议头。拥有FAQ编辑权限的攻击者上传此类恶意SVG文件后,恶意脚本被持久化存储。当管理员或其他用户浏览包含该SVG的FAQ页面时,浏览器解析SVG链接,触发JavaScript执行,从而导致Cookie窃取或会话劫持。

攻击链分析

STEP 1
1. 权限获取
攻击者注册或获取一个具有FAQ编辑权限的账户。
STEP 2
2. 载荷构造
攻击者构造包含深度嵌套与号编码的恶意SVG文件,旨在绕过SvgSanitizer的5次递归解码限制。
STEP 3
3. 文件上传
攻击者通过FAQ编辑界面上传构造好的恶意SVG文件。
STEP 4
4. 持久化存储
由于漏洞存在,恶意SVG文件被成功存储在服务器上,且未完全清理。
STEP 5
5. 触发漏洞
其他用户(如管理员)浏览包含该SVG的FAQ页面。
STEP 6
6. 代码执行
受害者浏览器解析SVG,解码嵌套实体并执行恶意的JavaScript代码。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- Conceptual PoC for Nested Entity Bypass --> <!-- The goal is to encode 'javascript:alert(1)' such that after 5 decodes it remains valid --> <svg xmlns="http://www.w3.org/2000/svg"> <a xmlns="http://www.w3.org/1999/xlink" href="&amp;#106;&amp;#97;&amp;#118;&amp;#97;&amp;#115;&amp;#99;&amp;#114;&amp;#105;&amp;#112;&amp;#116;&amp;#58;alert(1)"> <text x="10" y="20">Click Me</text> </a> </svg> <!-- Note: The actual exploit requires deeper nesting than shown above to bypass the specific 5-iteration limit logic described in the CVE. -->

影响范围

phpMyFAQ < 4.1.2

防御指南

临时缓解措施
建议立即升级至phpMyFAQ 4.1.2或更高版本。若无法立即升级,应暂时禁用SVG文件上传功能,或仅允许受信任的管理员上传图片,并部署WAF规则以检测和拦截包含嵌套HTML实体的请求。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表