关键信息 漏洞概述 漏洞类型: 存储型XSS 受影响方法: 方法 文件上传逻辑: UserBase.php 和相关文件上传逻辑 攻击方式: 低权限用户上传包含嵌入JavaScript的恶意SVG文件 影响 控制内容和文件名: 攻击者可以控制写入公共存储路径的文件内容和文件名 持久性XSS: 如果恶意SVG被用户浏览器渲染,嵌入脚本将执行,导致持久性XSS 受影响产品和版本 产品: VaaCMS 易受攻击版本: 2.3.1 易受攻击的端点 POST /backend/vaah/manage/media/upload 关键缺陷 1. 竞态条件/定时问题: 文件在任何内容验证或MIME类型检查之前物理保存到磁盘。 2. 可预测路径: 恶意文件保存在可预测的公共路径下。 3. 无清理: 即使后端返回错误,文件仍保留在磁盘上。 利用流程(概念验证) 1. 攻击者创建一个专门制作的SVG文件。 2. 攻击者向易受攻击的端点发送请求,控制文件名。 3. 尽管后端响应失败,文件仍保存在磁盘上。 4. 攻击者将链接或嵌入路径传递给受害者,触发payload。 缓解措施/供应商响应 供应商: VaaCMS 状态: 已确认,修复待定 临时缓解措施: - 禁用应用程序中的SVG文件上传 - 在存储文件之前使用服务器端文件类型验证 - 使用专用SVG清理库 - 将上传文件存储在Web根目录之外并通过安全代理提供服务 - 实施自动清理未通过验证的文件 参考文献 webreinvent/vaahcms#301 研究员和披露日期 研究员: Thaw Phone Nyo 披露日期: 2025年10月8日