漏洞总结:Stored XSS via XssHtmlFilter Bypass #38 漏洞概述 SpringBlade 的 接口存在存储型跨站脚本(XSS)漏洞。攻击者利用 JSON Unicode 转义序列( )完全绕过 过滤器,将任意 JavaScript 注入到 字段中。由于通知系统允许低权限用户向高权限用户(如管理员)发送消息,这可能导致会话劫持、权限提升和任意 API 执行。 影响范围 受影响版本:≤ 4.8.0 仓库地址:https://github.com/chillzhuang/SpringBlade 修复方案 1. 不要将原始 JSON 主体作为 HTML 进行过滤: 不应将 应用于整个 JSON 请求体。相反,应在 JSON 反序列化后(例如,通过 Jackson 反序列化器或 )对各个字段值进行清理。 2. 使用经过验证的 HTML 清理器:用经过良好测试的库(如 OWASP Java HTML Sanitizer 或 Jsoup Cleaner)替换自定义的基于正则表达式的 。 3. 应用输出编码:确保所有用户提供的内容在前端渲染时都经过 HTML 编码,无论后端过滤如何。 POC 代码 1. 注入恶意 Payload (Request) 2. 触发 XSS (Response) 3. 关键代码分析 XssHttpServletRequestWrapper.java XssHtmlFilter.java