5月27日 21:36

如何检测 XSS 漏洞?有哪些常用的 XSS 检测工具和方法?

答案

检测 XSS 漏洞分手动测试和自动化工具两条线。手动测试关注三个输入来源——URL 参数、表单提交、DOM 来源,逐个注入 <script>alert(1)</script><img src=x onerror=alert(1)> 等基础 Payload,观察是否原样回显到页面。自动化工具推荐三款:Burp Suite 拦截请求后用 Intruder 批量注入变体 Payload,适合深度测试;XSStrike 专攻 XSS,自带 WAF 绕过和上下文感知的 Payload 生成,命令行一行搞定;OWASP ZAP 开源免费,适合快速扫描。三种 XSS 类型检测侧重不同:反射型盯 URL 参数回显,存储型盯评论区/个人资料等持久化输出,DOM 型盯 innerHTMLdocument.write 等危险 Sink 以及 location.hash 等客户端 Source。代码审计层面,重点搜 innerHTMLevaldocument.write 和未转义的用户输入拼接,配合 ESLint security 插件或 Semgrep 做静态扫描。

追问

Q: DOM 型 XSS 和反射型 XSS 的根本区别是什么? 反射型的恶意数据经过服务器再返回,在响应 HTML 中可见;DOM 型完全在客户端发生,服务端响应里看不到恶意代码,必须审查前端 JS 逻辑才能发现。

Q: 如果目标站部署了 WAF,XSS 检测怎么做? 先确认 WAF 规则类型。常见绕过:大小写混写 <ScRiPt>、编码绕过 &#x3c;script&#x3e;、事件属性替代 <img src=x onerror=...>、利用 SVG/MathML 标签。XSStrike 的 --skip 参数可跳过 WAF 检测直接注入。

Q: 如何证明发现的 XSS 漏洞有实际危害?alert(1) 升级到可利用场景:窃取 Cookie(document.cookie 发往攻击者服务器)、键盘记录、钓鱼表单注入、组合 CSRF 实现账户接管。面试中能说出危害链路比只会弹框高一个层次。

标签:XSS