Web For Pentester 平台 针对Xss-Example 1-10
字数 1463 2025-08-18 11:38:31

Web For Pentester XSS 漏洞实战教程 (Example 1-10)

前言

Web For Pentester 是一个专为初学者设计的 PHP 漏洞学习环境,本教程详细解析其中的 XSS 漏洞示例 1-10,帮助学习者深入理解跨站脚本攻击的各种形式和防御方法。

XSS 基础概念

跨站脚本攻击 (XSS) 是一种将恶意脚本注入到可信网站中的攻击方式,主要分为三类:

  • 反射型 XSS
  • 存储型 XSS
  • DOM 型 XSS

示例解析

Example 1: 基础 XSS

<script>alert(1)</script>

特点:最简单的 XSS 注入,无任何过滤

Example 2: 基础过滤

<sc<script>ript>alert(1)</sc</script>ript>

特点:过滤了 script 标签
绕过方法:在过滤的关键词中插入自身,使过滤后形成完整标签

Example 3: 变体过滤

<-sc<-script>ript>alert(1)<-/sc<-/script>ript>

特点:使用 <- 替代 < 进行过滤
绕过方法:与 Example 2 类似,在过滤模式中插入自身

Example 4: 黑名单过滤


特点:完全禁止 script 标签
绕过方法:使用其他可执行 JavaScript 的 HTML 标签(如 img 的 onerror 事件)

Example 5: 关键词过滤



<script>eval(String.fromCharCode(97,108,101,114,116,40,49,41))</script>

特点:过滤 alert 关键词
绕过方法

  1. 使用其他弹窗函数(prompt/confirm)
  2. 使用 String.fromCharCode 编码 alert(1):
    • 97(a), 108(l), 101(e), 114(r), 116(t), 40((), 49(1), 41())
  3. 使用 eval 执行编码后的字符串

Example 6: JavaScript 字符串注入

";alert(1);//

特点:输入被放入 JavaScript 字符串变量中

var $a = "hacker<script>alert(1)</script>";

绕过方法

  1. 闭合前面的引号和分号
  2. 插入恶意代码
  3. 注释掉后面的内容

Example 7: 单引号变体

';alert(1);//

特点:与 Example 6 类似,但使用单引号包裹
绕过方法:原理相同,使用单引号闭合

Example 8: 表单属性注入

/"><script>alert(1)</script>

特点:输入被放入表单属性中,< 被转义
绕过方法

  1. 先闭合表单标签
  2. 然后插入恶意脚本

Example 9: DOM 型 XSS

example9.php?<script>alert(1)</script>
example9.php#<script>alert(1)</script>

特点:利用 location.hash 实现 DOM XSS
关键点

  • # 后的内容不会发送到服务器
  • 仅在客户端由浏览器解析
  • 现代浏览器会对 < 自动编码(转为 %3C)

Example 10: 进阶 DOM XSS

(原文未提及,但通常涉及更复杂的 DOM 操作)

防御措施总结

  1. 输入过滤:

    • 黑名单方式容易被绕过
    • 推荐使用白名单方式
  2. 输出编码:

    • HTML 实体编码
    • JavaScript 编码
    • URL 编码
  3. 内容安全策略 (CSP):

    • 限制脚本来源
    • 禁止内联脚本
  4. HttpOnly Cookie:

    • 防止 JavaScript 访问敏感 Cookie
  5. 框架安全功能:

    • 现代框架(如 React、Vue)的自动转义

实战技巧

  1. 多尝试不同的事件处理器:

    • onerror, onload, onclick 等
  2. 使用编码绕过:

    • HTML 实体
    • URL 编码
    • Unicode 编码
  3. 注意上下文:

    • HTML 标签内
    • HTML 属性中
    • JavaScript 代码中
    • URL 参数中
  4. 测试各种闭合方式:

    • 引号闭合
    • 标签闭合
    • 注释掉后续内容

本教程详细解析了 Web For Pentester 中的 XSS 示例,展示了从基础到进阶的各种 XSS 攻击技术和防御方法,是学习 Web 安全的宝贵资源。

Web For Pentester XSS 漏洞实战教程 (Example 1-10) 前言 Web For Pentester 是一个专为初学者设计的 PHP 漏洞学习环境,本教程详细解析其中的 XSS 漏洞示例 1-10,帮助学习者深入理解跨站脚本攻击的各种形式和防御方法。 XSS 基础概念 跨站脚本攻击 (XSS) 是一种将恶意脚本注入到可信网站中的攻击方式,主要分为三类: 反射型 XSS 存储型 XSS DOM 型 XSS 示例解析 Example 1: 基础 XSS 特点 :最简单的 XSS 注入,无任何过滤 Example 2: 基础过滤 特点 :过滤了 script 标签 绕过方法 :在过滤的关键词中插入自身,使过滤后形成完整标签 Example 3: 变体过滤 特点 :使用 <- 替代 < 进行过滤 绕过方法 :与 Example 2 类似,在过滤模式中插入自身 Example 4: 黑名单过滤 特点 :完全禁止 script 标签 绕过方法 :使用其他可执行 JavaScript 的 HTML 标签(如 img 的 onerror 事件) Example 5: 关键词过滤 特点 :过滤 alert 关键词 绕过方法 : 使用其他弹窗函数(prompt/confirm) 使用 String.fromCharCode 编码 alert(1): 97(a), 108(l), 101(e), 114(r), 116(t), 40((), 49(1), 41()) 使用 eval 执行编码后的字符串 Example 6: JavaScript 字符串注入 特点 :输入被放入 JavaScript 字符串变量中 绕过方法 : 闭合前面的引号和分号 插入恶意代码 注释掉后面的内容 Example 7: 单引号变体 特点 :与 Example 6 类似,但使用单引号包裹 绕过方法 :原理相同,使用单引号闭合 Example 8: 表单属性注入 特点 :输入被放入表单属性中, < 被转义 绕过方法 : 先闭合表单标签 然后插入恶意脚本 Example 9: DOM 型 XSS 特点 :利用 location.hash 实现 DOM XSS 关键点 : # 后的内容不会发送到服务器 仅在客户端由浏览器解析 现代浏览器会对 < 自动编码(转为 %3C) Example 10: 进阶 DOM XSS (原文未提及,但通常涉及更复杂的 DOM 操作) 防御措施总结 输入过滤: 黑名单方式容易被绕过 推荐使用白名单方式 输出编码: HTML 实体编码 JavaScript 编码 URL 编码 内容安全策略 (CSP): 限制脚本来源 禁止内联脚本 HttpOnly Cookie: 防止 JavaScript 访问敏感 Cookie 框架安全功能: 现代框架(如 React、Vue)的自动转义 实战技巧 多尝试不同的事件处理器: onerror, onload, onclick 等 使用编码绕过: HTML 实体 URL 编码 Unicode 编码 注意上下文: HTML 标签内 HTML 属性中 JavaScript 代码中 URL 参数中 测试各种闭合方式: 引号闭合 标签闭合 注释掉后续内容 本教程详细解析了 Web For Pentester 中的 XSS 示例,展示了从基础到进阶的各种 XSS 攻击技术和防御方法,是学习 Web 安全的宝贵资源。