用途
对 Web 应用执行全面的客户端注入漏洞评估,以识别 XSS 和 HTML 注入缺陷,演示用于会话劫持和凭据窃取的利用技术,并验证输入清理和输出编码机制。此技能可对存储型、反射型和基于 DOM 的攻击向量进行系统化检测和利用。
主要能力
漏洞检测
定位用户输入在响应中回显的位置,包括搜索框和查询参数、用户资料字段、URL 片段和哈希值、显示用户输入的错误信息、仅客户端验证的表单字段、隐藏表单字段和参数、HTTP 头(User-Agent、Referer)。插入测试字符串观察应用行为,判断输入是否被原样反射、部分编码或触发 JavaScript 执行,并判断 XSS 类型(存储型、反射型或 DOM 型)。
存储型 XSS 利用
针对评论区和论坛、用户资料字段、产品评价和评分、私信与聊天系统、文件上传元数据、配置设置与偏好等持久化用户内容区域,构造持久载荷,包括 Cookie 窃取载荷、键盘记录注入、会话劫持以及钓鱼表单注入。
反射型 XSS 利用
构造包含 XSS 载荷的恶意 URL,支持基础反射载荷、URL 编码载荷、参数中的事件处理器、基于片段的载荷。投递方式包括钓鱼邮件、社交媒体消息、URL 短链、二维码以及通过受信任域的重定向链。
DOM 型 XSS 利用
识别易受攻击的接收点(如 document.write、element.innerHTML、innerHTML、eval、setTimeout 等)与用户可控来源(如 location.hash、location.search、document.referrer、window.name、postMessage 数据、localStorage/sessionStorage),并给出基于哈希、URL 参数和 PostMessage 的利用示例。
HTML 注入技术
涵盖反射型与存储型 HTML 注入,包括内容注入、表单劫持、用于数据外泄的 CSS 注入、iframe 注入、跑马灯干扰、样式覆盖以及 CSS 隐藏内容。
过滤器绕过
提供标签与属性变体(大小写变化、替代标签、畸形标签)、编码绕过(HTML 实体、十六进制、Unicode、混合编码)、JavaScript 混淆(字符串拼接、模板字面量、构造函数执行、Base64、无括号写法)以及空白和注释绕过技术。
快速参考
包含 XSS 检测清单、常见上下文对应的载荷表、Cookie 窃取载荷和会话劫持模板。
使用方式
所需访问条件包括:带用户输入字段的目标 Web 应用 URL,用于请求分析的 Burp Suite 或浏览器开发者工具,用于存储型 XSS 测试的测试账号,以及启用 JavaScript 控制台的浏览器。技术前提包括理解浏览器上下文中的 JavaScript 执行、HTML DOM 结构与操作、HTTP 请求/响应头、Cookie 属性与会话管理。法律前提包括书面安全测试授权、明确的目标域名与功能范围、捕获会话数据的处理协议以及事件响应流程。
核心工作流分为六个阶段:阶段 1 漏洞检测(定位输入反射点、基础检测测试、确定 XSS 类型);阶段 2 存储型 XSS 利用(识别存储位置、构造持久载荷);阶段 3 反射型 XSS 利用(构造恶意 URL、投递方式);阶段 4 DOM 型 XSS 利用(识别易受攻击的接收点和来源);阶段 5 HTML 注入技术;阶段 6 过滤器绕过技术。
输出交付物包括带严重性分级的 XSS/HTMLi 漏洞报告、证明影响的 PoC 载荷、受控环境下的会话劫持演示以及带 CSP 配置的修复建议。
适用场景
适用于获得授权的 Web 应用安全测试,用于发现和验证客户端注入缺陷,评估输入清理与输出编码机制的有效性,演示漏洞的实际影响,并提供修复建议。
限制与约束
操作边界:不得注入可能损坏生产系统的载荷;Cookie/会话捕获仅限演示用途;避免可能传播给非预期用户的载荷(蠕虫行为);不得在范围要求之外外泄真实用户数据。
技术限制:内容安全策略(CSP)可能阻止内联脚本;HttpOnly Cookie 阻止 JavaScript 访问;SameSite Cookie 属性限制跨域攻击;现代框架通常自动转义输出。
法律与道德要求:测试前需要书面授权;立即报告严重 XSS 漏洞;按数据保护协议处理捕获的凭据;不得利用发现的漏洞进行未授权访问。
故障排查涵盖脚本不执行(检查 CSP 阻止、验证编码、尝试事件处理器、确认 JS 已启用)、载荷出现但不执行(用引号突破属性上下文、检查是否在注释内、测试不同上下文)、Cookie 不可访问(检查 HttpOnly 标志、尝试 localStorage/sessionStorage、使用 no-cors 模式)、CSP 阻止载荷(在列入白名单的域名上寻找 JSONP、检查 unsafe-inline、测试 base-uri 绕过)、WAF 阻止请求(使用编码变体、片段载荷、空字节、大小写变体)。