漏洞概述 标题: sanitize-html allowedTags Bypass via Entity-Decoded Text in nonTextTags Elements 描述: 漏洞类型: 通过实体解码文本在 元素中绕过 限制。 影响版本: <= 2.17.2 修复版本: None 详细信息: 问题根源: 10.x 版本在将文本传递给 回调之前,会解码 和 元素中的 HTML 实体。 漏洞利用: 攻击者可以通过实体编码注入任意标签,包括 XSS 载荷,绕过 过滤器。 执行流程: 1. 攻击者提交包含实体编码的 或 标签。 2. 解析并解码实体。 3. 代码在特定行检查标签是否为 或 。 4. 直接写入解码后的文本,未进行额外转义。 5. 注入的标签在允许的 或 元素中执行。 影响范围 完全绕过 : 任何 HTML 标签都可以通过实体编码注入到允许的 或 元素中。 存储型 XSS: 使用 的应用程序(如表单构建器、CMS 平台、富文本编辑器)容易受到存储型 XSS 攻击。 会话劫持: 攻击者可以注入事件处理器(如 、 等)来窃取会话 cookie 或认证令牌。 影响范围: 非默认配置中, 通常不包括 或 ,但这些标签在处理表单相关 HTML 内容时常见。 修复方案 移除漏洞代码块: 删除 中第 569-573 行的漏洞代码块。 正确转义: 分支(第 574 行)正确处理这些元素, 10.x 解码实体后,使用 产生正确的 HTML 输出(实体被正确转义,不会双重编码)。 POC 代码 总结 该漏洞允许攻击者通过实体编码绕过 的 限制,注入任意 HTML 标签,导致 XSS 攻击。修复方法是移除漏洞代码块,确保正确转义解码后的文本。