CVE-2025-3568
通过恶意 SVG 文件实现权限提升
概述
已在 Krayin CRM 2.1.0 中发现一个安全漏洞,该漏洞允许低权限用户通过诱骗管理员打开恶意 SVG 文件来提升权限。此漏洞利用基于 SVG 的跨站请求伪造(CSRF)和跨站脚本(XSS),以实现:
- 从 Cookie 中窃取管理员的 XSRF 令牌。
- 通过未受保护的 API 端点,在不知道当前密码的情况下更改管理员密码。
这可能导致管理员账户被完全接管和数据泄露。
技术细节
漏洞类型
- 通过 SVG 文件上传实现 CSRF + XSS(存储型客户端攻击)
- 访问控制失效(无需当前密码即可更改密码)
受影响组件
- 用户管理模块(
/admin/settings/users/edit/[ID])
- 文件上传/邮件附件处理(包含嵌入 JavaScript 的 SVG)
攻击流程
- 攻击者(低权限用户)向管理员发送一封带有恶意 SVG 附件的邮件。
- 管理员在新标签页中打开 SVG 文件。
- SVG 内的 JavaScript 被执行,窃取管理员的
XSRF-TOKEN Cookie。
- 向 CRM 的用户管理端点发送伪造的 POST 请求,更改管理员密码。
- 攻击者使用新密码获得管理员完全访问权限。
概念验证(PoC)
https://github.com/user-attachments/assets/36f5f5ec-d7f1-4ea8-aa78-f1be396e13d3
影响
- 管理员账户被完全接管: 攻击者可以重置管理员密码并登录。
- 数据泄露: 访问敏感 CRM 数据(客户信息、交易记录等)。
- 持久化: 攻击者可以创建后门账户或修改系统设置。
根本原因分析
缺少 SVG 清理机制
- CRM 允许上传包含嵌入 JavaScript 的 SVG 文件,从而引发 XSS。
密码更改逻辑缺陷
/admin/settings/users/edit 端点未强制验证当前密码。
结论
该漏洞对 CRM 的安全构成重大风险,使攻击者能够以极小的代价劫持管理员账户。需要立即采取行动修复该问题并阻止漏洞利用。
参考