IPBUF安全漏洞报告
English
CVE-2026-33741 CVSS 6.8 中危

CVE-2026-33741 EspoCRM 存储型XSS漏洞

披露日期: 2026-05-19

漏洞信息

漏洞编号
CVE-2026-33741
漏洞类型
存储型跨站脚本攻击 (Stored XSS)
CVSS评分
6.8 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
EspoCRM

相关标签

XSSStored XSSEspoCRMCVE-2026-33741SVG Upload

漏洞概述

EspoCRM 9.3.3及以下版本存在存储型XSS漏洞。由于系统允许认证用户通过附件字段上传SVG文件,并将其作为顶级内联文档提供,虽然响应的CSP策略阻止了内联SVG脚本,但仍允许加载同源的外部脚本。攻击者可利用这一点,上传恶意SVG和JavaScript文件,诱导受害者打开SVG,从而在受害者的EspoCRM源上下文中执行恶意JavaScript代码。该问题已在9.3.4版本中修复。

技术细节

该漏洞源于EspoCRM对SVG附件的处理逻辑及其内容安全策略(CSP)的配置缺陷。在受影响版本中,认证用户可以上传SVG文件,应用随后通过附件和图像入口点将这些文件作为内联文档提供。虽然CSP策略有效地阻止了直接在SVG内部编写内联脚本(如`<script>alert(1)</script>`),但它没有禁止加载同源下的外部脚本资源。攻击者首先上传一个包含恶意代码的JavaScript文件,然后上传一个SVG文件,该SVG文件通过`<script src="...">`标签引用之前上传的JS文件。当受害者被诱导访问该SVG文件时,浏览器解析SVG,发现script标签,由于同源策略和CSP允许,浏览器会获取并执行攻击者的JS文件,导致存储型XSS攻击。

攻击链分析

STEP 1
步骤1:上传恶意载荷
攻击者登录EspoCRM,首先上传一个包含恶意JavaScript代码的文件(例如malicious.js),系统会为其分配一个附件ID。
STEP 2
步骤2:上传触发器文件
攻击者构造一个SVG文件,利用`<script src="...">`标签引用步骤1中上传的JS文件的URL,然后将此SVG文件上传到系统中。
STEP 3
步骤3:诱导受害者访问
攻击者向受害者发送该SVG文件的链接,或通过其他方式诱导受害者点击查看该SVG附件。
STEP 4
步骤4:执行攻击代码
当受害者浏览器请求SVG文件时,解析其中的script标签。由于CSP允许同源脚本,浏览器会加载并执行攻击者上传的JS文件,导致XSS攻击。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- File 1: malicious.js --> // This file is uploaded to EspoCRM first console.log('XSS executed'); alert(document.cookie); <!-- File 2: exploit.svg --> <!-- This file references the uploaded JS file --> <svg xmlns="http://www.w3.org/2000/svg"> <text x="10" y="50" font-size="30"> <!-- Replace ATTACHMENT_ID with the ID of the uploaded malicious.js --> <script xmlns="http://www.w3.org/1999/xhtml" src="https://target-espocrm.com/api/v1/Attachment/file/ATTACHMENT_ID"></script> </text> </svg>

影响范围

EspoCRM <= 9.3.3

防御指南

临时缓解措施
如果无法立即升级,建议暂时禁用SVG文件上传功能,或通过Web应用防火墙(WAF)检测并拦截包含外部脚本引用的SVG文件响应,同时加强对用户上传附件的内容审查。

参考链接

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