漏洞关键信息 漏洞概述 类型: Cross-Site Scripting (XSS) 受影响库: html2pdf.js 根源: 未对用户输入进行清洗,直接赋值给 属性 受影响组件 文件: 行号: 71 链接: html2pdf.js/src/worker.js#L71 漏洞代码 攻击向量 1. 攻击者提供包含JavaScript有效载荷的恶意HTML字符串 2. html2pdf.js将此字符串分配给 属性 3. 元素被添加到DOM中 4. 浏览器执行JavaScript代码 5. XSS有效载荷在受害者的浏览器上下文中运行 部分缓解措施 文件中的部分缓解措施会移除 标签,但无法保护以下攻击向量: - 事件处理程序(如 , , 等) - 带嵌入脚本的SVG - 包含JavaScript URL的 - 其他HTML注入向量 概念验证 PoC 1: 基本XSS(Alert) - Payload: - 结果: 在PDF生成过程开始时出现警报对话框,确认XSS执行 技术分析 代码流程: 1. 输入接收 2. 字符串处理 3. DOM注入 4. XSS执行 当前缓解措施失败原因 标签移除操作发生在 赋值之后,此时事件处理器已经注册。 浏览器行为 现代浏览器会在包含事件处理程序的HTML设置 时执行JavaScript 修复建议 采用 库进行用户输入清洗示例: 修复版本 此问题已在版本0.14.0中解决 ``` 以上信息是关于html2pdf.js库的XSS漏洞的关键内容,包括问题根源、受影响组件、概念验证、技术分析、失败的缓解措施和修复建议。