IPBUF安全漏洞报告
English
CVE-2026-46361 CVSS 6.9 中危

CVE-2026-46361 phpMyFAQ 存储型XSS漏洞

披露日期: 2026-05-15

漏洞信息

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

相关标签

XSSStored XSSphpMyFAQCVE-2026-46361Web SecurityTemplate Injection

漏洞概述

phpMyFAQ 4.1.2之前的版本中存在存储型跨站脚本(XSS)漏洞。该漏洞源于search.twig模板使用了raw过滤器渲染用户输入,导致自动转义保护失效。拥有FAQ编辑器权限的攻击者可以注入经过HTML实体编码的恶意载荷,绕过后端SearchController.php中的安全过滤机制。当其他用户(包括管理员)访问搜索结果时,恶意JavaScript代码将在其浏览器中执行,可能导致会话劫持或权限提升。

技术细节

该漏洞的根本原因在于Twig模板引擎的不安全配置以及后端过滤逻辑的缺陷。在`search.twig`文件中,渲染搜索结果时对`result.question`和`result.answerPreview`变量使用了`|raw`过滤器,这完全关闭了HTML自动转义机制。虽然后端`SearchController.php`尝试使用`strip_tags()`清理输入,但攻击者可以通过发送HTML实体编码的Payload(如`<img src=x onerror=alert(1)>`)来绕过。由于`strip_tags()`通常不会移除实体编码的尖括号,这些字符被保留。经过后端的`html_entity_decode`处理后,实体字符还原为实际的HTML标签。当数据传送到前端并经过`|raw`过滤器渲染时,浏览器将其解析为可执行的JavaScript代码。攻击者只需具备FAQ编辑权限,即可将恶意代码存入数据库,在管理员或其他用户搜索时触发,进而窃取会话凭证。

攻击链分析

STEP 1
1. 获取权限
攻击者获取具有FAQ编辑权限的账户凭据。
STEP 2
2. 注入载荷
攻击者在创建或编辑FAQ条目时,在问题或答案字段中插入HTML实体编码的恶意脚本(例如`<img src=x onerror=alert(1)>`)。
STEP 3
3. 绕过过滤
后端SearchController.php处理数据,`strip_tags()`未能识别并移除实体编码的标签,随后`html_entity_decode()`将其还原为HTML标签并存入数据库。
STEP 4
4. 触发漏洞
普通用户或管理员访问phpMyFAQ的搜索功能,搜索相关关键词触发结果展示。
STEP 5
5. 执行攻击
前端`search.twig`模板使用`|raw`过滤器渲染未转义的数据,浏览器解析并执行攻击者注入的JavaScript代码。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- PoC Concept: 1. Attacker logs in as an FAQ Editor. 2. Creates or edits a FAQ entry. 3. Injects the following payload into the 'Question' or 'Answer' field. The payload uses HTML entities to bypass strip_tags(), which is later decoded and rendered unsafely via |raw. --> &lt;img src=x onerror=alert(document.cookie)&gt; <!-- Explanation: - &lt; represents < - &gt; represents > - strip_tags() sees "&lt;...&gt;" as text and allows it. - html_entity_decode() converts it back to "<img...>". - Twig |raw filter outputs it directly, executing the JS. -->

影响范围

phpMyFAQ < 4.1.2

防御指南

临时缓解措施
在未升级版本前,建议管理员严格限制FAQ编辑权限,仅授予可信人员。可临时修改`search.twig`模板文件,移除`result.question`和`result.answerPreview`字段的`|raw`过滤器以启用默认转义保护。同时,部署Web应用防火墙(WAF)规则以检测和拦截针对搜索页面的潜在恶意脚本注入。

参考链接

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