关键信息总结 漏洞类型 Stored XSS via SVG Upload in Avatar Upload Endpoint 漏洞描述 Summary: 存储型跨站脚本(XSS)漏洞存在于 方法中,由于对SVG文件处理不当,攻击者可以上传包含嵌入式JavaScript的SVG文件,控制其文件名,并将其保存在可预测的公共位置。 漏洞端点 Vulnerable Endpoint: POST /backend/vaah/manage/media/upload 利用流程 上传恶意SVG文件(包含 标签) 控制文件名(例如:xss) 预测公共路径(例如:/storage/media/2023/08/xss.svg) 通过精心制作的链接或嵌入 或 触发脚本执行 影响 尽管低级别注册用户更新头像时存在漏洞端点允许上传恶意SVG文件并公开保存,但头像URL本身不会更新这些恶意文件。然而,攻击者仍可控制文件名和上传位置,导致持久性XSS。 披露内容 完整HTTP请求 示例payload 测试设置和复现步骤 根因总结 文件验证在物理存储后进行 缺乏内容检查以阻止嵌入JavaScript的SVG文件 没有清理机制移除部分处理或失败的上传 参考资料 OWASP: SVG Security OWASP File Upload Cheat Sheet OWASP Laravel Cheat Sheet - Unrestricted File Uploads CWE-434: Unrestricted Upload of File with Dangerous Type