💸 如果这个项目对你有帮助,可以考虑捐赠10美元支持它发展。链接:https://rzp.io/rzp/zgkC6h5B
一个交互式、自托管的 XSS 训练平台,包含 33 个逐步升级的挑战 —— 专为黑客、渗透测试人员和开发者设计,让你从基础到真实世界利用全面掌握跨站脚本攻击。
⚡ 为攻击者打造
⚡ 为学习设计
⚡ 为简洁构建
33 个逐步升级的 XSS 挑战,从基础反射型到高级真实世界利用。
| # | 名称 | 描述 |
|---|---|---|
| 1 | 你好,反射型 XSS | 无过滤,无编码。你的输入直接反映到页面中。 |
| 2 | 存储型 XSS 留言板 | 你的输入被存储并呈现给所有访客。经典的持久型 XSS。 |
git clone https://github.com/The-Cyber-Ledger/TCL-xss-labs.git
cd TCL-xss-labs
npm install
npm start
打开: http://localhost:3000
一条命令运行全部 33 个实验室:
docker pull shadowpacket/tcl-xss-labs
docker run -p 3000:3000 shadowpacket/tcl-xss-labs
打开:http://localhost:3000
触发 alert() 或执行真实的利用(数据窃取、管理员接管等)。本项目是一个刻意存在漏洞的训练环境。仅限在本地或受控环境中使用。未经授权不得针对系统。仅用于教育目的。
大多数人通过解决实验室来学习 XSS。这个项目帮助你像真正的攻击者一样理解利用方式。
| # | 名称 | 描述 |
|---|
| 3 | 脚本标签被拦截 | 服务器剥离 <script> 标签。找到另一种执行 JavaScript 的方式。 |
| 4 | 属性注入 | 你的输入位于 HTML 属性内。跳出并执行代码。 |
| 5 | JavaScript 上下文 | 你的输入被放入 JavaScript 字符串变量中。转义并注入。 |
| 28 | Markdown 注入 | 一个天真的 Markdown 渲染器将你的帖子转换为 HTML。让它执行 JavaScript。 |
| 32 | 文件名注入 | 上传一个文件。文件名未经消毒就反映在 UI 中。 |
| # | 名称 | 描述 |
|---|
| 6 | 事件处理程序黑名单 | 常见事件处理程序被阻止。找到一个过滤器遗漏的冷门事件。 |
| 7 | 大小写与关键词过滤 | 激进单遍过滤器。使用嵌套关键词在剥离后重建。 |
| 8 | 基于 DOM 的 XSS | 漏洞完全存在于从 URL 读取的客户端 JavaScript 中。 |
| 25 | 开放重定向 → XSS | 将开放重定向与 meta-refresh 标签链式组合以实现 XSS。 |
| 27 | localStorage DOM XSS | 存储在 localStorage 中的数据在重新加载时未经消毒即呈现。 |
| # | 名称 | 描述 |
|---|
| 9 | href 注入带过滤器 | 输入进入锚点 href,应用了多个过滤器。 |
| 10 | 通过 JSONP 绕过 CSP | 使用同源 JSONP 端点绕过内容安全策略。 |
| 11 | 双重编码绕过 | 利用 WAF 与应用程序之间的双重解码行为。 |
| 12 | 客户端模板注入 | 模板引擎使用 eval 评估 {{表达式}}。 |
| 13 | postMessage XSS | 利用不安全的跨窗口消息传递,无来源验证。 |
| 14 | SVG 上传 XSS | 上传 SVG 文件并使用 SVG 特定功能执行 payload。 |
| 15 | 突变 XSS | 利用浏览器 DOM 突变行为绕过消毒。 |
| 16 | 递归关键词过滤 | 过滤器递归循环 —— 使用替代执行上下文。 |
| 17 | 多语言 payload | payload 必须在 HTML、属性和 JS 上下文中执行。 |
| 18 | DOM 污染 | 使用精心构造的 HTML 元素覆盖全局变量。 |
| 19 | 原型污染 → XSS | 污染原型链以在不直接注入 HTML 的情况下实现 XSS。 |
| 20 | 基础标签注入 | 注入 <base> 以操纵资源加载并绕过 CSP。 |
| 21 | 悬挂标记注入 | 仅使用 HTML 注入(无 JS)窃取敏感数据。 |
| 22 | 脚本块中的 JSON 注入 | 在带 nonce 的脚本块中转义 JSON 上下文。 |
| 23 | URL 方案绕过 | 使用编码技巧绕过阻止 javascript: 的过滤器。 |
| 24 | CSS 注入数据窃取 | 使用 CSS 提取敏感数据,无需 JavaScript。 |
| 26 | CRLF → 响应分割 | 注入头信息以分割 HTTP 响应并注入 HTML。 |
| 29 | iframe 沙箱逃逸 | 逃离不安全的 iframe 沙箱配置。 |
| 30 | AngularJS 沙箱逃逸 | 利用 AngularJS 表达式沙箱绕过技术。 |
| 31 | Web 组件插槽注入 | 通过基于插槽的渲染注入到 Shadow DOM 中。 |
| 33 | 盲 XSS(带外) | 在不可见的管理面板中触发 payload 执行。 |