CVE-2025-60454CVE-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文件上传至目标系统,最后诱导管理员或其他用户访问该图像链接即可触发攻击。