xss绕过总结
字数 1631 2025-09-01 11:25:54
XSS绕过技术全面总结
一、XSS基础概念
XSS(跨站脚本攻击)是一种将恶意脚本注入到网页中的攻击方式,当其他用户访问被注入的页面时,恶意脚本会在其浏览器中执行。
二、XSS类型
1. 反射型XSS
- 恶意脚本作为请求的一部分发送到服务器
- 服务器将恶意脚本包含在响应中返回给用户
- 常见于搜索框、错误消息等场景
2. 存储型XSS
- 恶意脚本被永久存储在服务器上
- 每次用户访问受影响页面时都会执行
- 常见于留言板、评论系统等
3. DOM型XSS
- 完全在客户端发生,不涉及服务器
- 通过修改DOM环境在客户端执行恶意代码
三、常见XSS绕过技术
1. 基本绕过技术
1.1 大小写混淆
<sCrIpT>alert(1)</ScRiPt>
1.2 使用HTML实体编码
<script>alert(1)</script>
1.3 使用JavaScript伪协议
<a href="javascript:alert(1)">点击</a>
1.4 使用事件处理器
2. 高级绕过技术
2.1 编码绕过
- URL编码
- Unicode编码
- HTML实体编码
- Base64编码
2.2 利用SVG标签
<svg/onload=alert(1)>
2.3 利用CSS表达式(IE特有)
<div style="x:expression(alert(1))">
2.4 利用iframe标签
<iframe src="javascript:alert(1)">
2.5 利用data URI
<object data="data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg==">
3. 特殊场景绕过
3.1 绕过HTML标签过滤
- 使用不常见的标签:
<details open ontoggle=alert(1)> - 使用自闭合标签:``
3.2 绕过属性过滤
- 使用无引号属性:``
- 使用反引号:``
- 使用换行符:``
3.3 绕过JavaScript过滤
- 使用String.fromCharCode:
alert(String.fromCharCode(88,83,83)) - 使用eval:
eval('al'+'ert(1)') - 使用setTimeout:
setTimeout('alert(1)')
3.4 绕过CSP(内容安全策略)
- 使用JSONP端点
- 使用AngularJS沙箱逃逸
- 使用不安全的CSP配置
四、防御措施
1. 输入过滤
- 对用户输入进行严格的验证和过滤
- 使用白名单而非黑名单
2. 输出编码
- HTML实体编码:
< > & " ' - JavaScript编码
- URL编码
3. 使用安全头
- Content-Security-Policy (CSP)
- X-XSS-Protection
- HttpOnly cookie标志
4. 框架安全特性
- 使用现代框架的内置XSS防护
- React的JSX自动转义
- Angular的模板安全
五、测试工具与方法
1. 手动测试
- 尝试各种payload变体
- 观察过滤和编码行为
2. 自动化工具
- OWASP ZAP
- Burp Suite
- XSS Hunter
3. Payload集合
- OWASP XSS Filter Evasion Cheat Sheet
- PortSwigger XSS Cheat Sheet
六、实际案例
案例1:绕过简单过滤
原始输入:<script>alert(1)</script>
过滤后:alert(1)
绕过:
案例2:利用HTML5特性
<video><source onerror=alert(1)>
案例3:DOM型XSS
document.write('')
七、高级技巧
1. 盲XSS技术
- 使用外部服务器接收数据
- 利用DNS查询泄露信息
2. 持久化技术
- 利用localStorage
- 利用Service Workers
3. 组合攻击
- XSS + CSRF
- XSS + Clickjacking
- XSS + SSRF
八、最新研究趋势
1. WebAssembly中的XSS
- 通过Wasm模块执行恶意代码
2. 基于机器学习的检测绕过
- 生成对抗性payload
3. 新型DOM污染攻击
- 利用原型链污染
九、参考资源
- OWASP XSS Prevention Cheat Sheet
- PortSwigger XSS Research
- HTML5 Security Cheat Sheet
- Browser Security Handbook
十、总结
XSS绕过技术不断发展,防御措施也需要随之更新。安全人员需要:
- 了解最新的XSS技术
- 实施多层防御策略
- 定期进行安全测试
- 保持安全意识培训