6.bWAPP XSS
字数 1847 2025-08-24 16:48:07

bWAPP XSS漏洞分析与利用全面指南

0x01 XSS - Reflected (GET)

Low级别

  • 漏洞描述:输入内容直接输出到页面,无任何过滤
  • 利用方法:直接构造XSS payload
    <script>alert(1)</script>
    
  • 防御缺失:无任何输入过滤或输出编码

Medium级别

  • 过滤机制:使用addslashes()函数(主要用于防SQL注入)
  • 绕过方法addslashes()对XSS无效,仍可使用相同payload
    <script>alert(1)</script>
    

High级别

  • 安全措施:将所有关键字转换为HTML实体
  • 防御效果:完全防护,无法注入

0x02 XSS - Reflected (POST)

  • 与GET型区别:请求方式不同
  • GET型示例
    http://localhost:8080/bWAPP/xss_get.php?firstname=<script>alert(1)</script>
    
  • POST型:需构造POST请求体
  • 各级别情况:与GET型相同

0x03 XSS - Reflected (JSON)

Low级别

  • 漏洞特征:错误信息中包含未过滤的用户输入
  • 初始尝试:直接注入失败
    <script>alert(1)</script>
    
  • 正确方法:分析HTML源码后发现需闭合JSON结构
    "}]}'; alert(document.cookie) //
    

Medium&High级别

  • 安全措施:关键字转HTML实体
  • 防御效果:完全防护

0x04 XSS - Reflected (AJAX/JSON)

Low&Medium级别

  • 直接注入方法
    
    
  • AJAX端点xss_ajax_2-2.php?title=也可直接注入

High级别

  • 防御措施:HTM实体编码
  • 防御效果:输入作为纯文本输出,无法执行

0x05 XSS - Reflected (AJAX/XML)

Low&Medium级别

  • XML专用payload
    <a xmlns:a='http://www.w3.org/1999/xhtml'><a:body onload='alert(1)'/></a>
    
  • 解释xmlns定义XML命名空间,利用onload事件

High级别

  • 防御措施htmlspecialchars()函数
  • 防御效果:完全防护

0x06 XSS - Reflected (Back Button)

Low级别

  • 漏洞原理:利用Referer头进行跳转
  • payload构造
    Referer:'"><script>alert(1)</script>
    
  • 攻击方法:闭合input标签后注入

High级别

  • 防御措施:关键字转HTML实体
  • 防御效果:完全防护

0x07 XSS - Reflected (Custom Header)

Low级别

  • 攻击方法:在HTTP头中添加恶意字段
    bWAPP:<script>alert(1)</script>
    

Medium级别

  • 过滤机制addslashes()(可绕过)

High级别

  • 防御措施:HTML实体编码
  • 防御效果:完全防护

0x08 XSS - Reflected (Eval)

Low&High级别

  • 漏洞原理eval()函数直接执行输入
  • payload
    http://localhost:8080/bWAPP/xss_eval.php?date=alert(1)
    

Medium级别

  • 不影响:仍可执行JS代码

0x09 XSS - Reflected (HREF)

Low级别

  • 方法一:闭合p标签
    </p> <script>alert(1)</script>
    
  • 方法二:闭合链接
    1>Vote</a> <script>alert(1)</script>
    

Medium&High级别

  • 防御措施urlencode()函数
  • 防御效果:完全防护

0x0A XSS - Reflected (Login Form)

Low级别

  • 漏洞发现:通过SQL注入测试发现输出未过滤
  • payload
    bee' 123 <script>alert(1)</script>
    

Medium级别

  • 过滤机制addslashes()(可绕过)

High级别

  • 防御措施htmlspecialchars()
  • 防御效果:完全防护

0x0B XSS - Reflected (Referer)

  • 同0x06关卡

0x0C XSS - Reflected (User-Agent)

  • 修改User-Agent头注入

0x0D XSS - Stored (Blog)

  • 同SQL注入存储型漏洞

0x0E XSS - Stored (Change Secret)

Low级别

  • 攻击步骤

    1. 修改密码为XSS payload
    <script>alert('hack')</script>
    
    1. 用户登录时触发
  • 前端修改方法

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

Medium级别

  • 过滤机制addslashes()(可绕过)

High级别

  • 防御措施htmlspecialchars()
  • 防御效果:完全防护

0x0F XSS - Stored (User-Agent)

  • 同SQL注入存储型漏洞

防御措施总结

  1. 有效防御

    • HTML实体编码(htmlspecialchars()
    • 上下文相关输出编码
    • 内容安全策略(CSP)
  2. 无效/不足防御

    • addslashes()(仅防SQL注入)
    • urlencode()(不防XSS)
    • 仅前端验证
  3. 最佳实践

    • 输入验证
    • 输出编码
    • 使用安全框架
    • 定期安全测试
bWAPP XSS漏洞分析与利用全面指南 0x01 XSS - Reflected (GET) Low级别 漏洞描述 :输入内容直接输出到页面,无任何过滤 利用方法 :直接构造XSS payload 防御缺失 :无任何输入过滤或输出编码 Medium级别 过滤机制 :使用 addslashes() 函数(主要用于防SQL注入) 绕过方法 : addslashes() 对XSS无效,仍可使用相同payload High级别 安全措施 :将所有关键字转换为HTML实体 防御效果 :完全防护,无法注入 0x02 XSS - Reflected (POST) 与GET型区别 :请求方式不同 GET型示例 : POST型 :需构造POST请求体 各级别情况 :与GET型相同 0x03 XSS - Reflected (JSON) Low级别 漏洞特征 :错误信息中包含未过滤的用户输入 初始尝试 :直接注入失败 正确方法 :分析HTML源码后发现需闭合JSON结构 Medium&High级别 安全措施 :关键字转HTML实体 防御效果 :完全防护 0x04 XSS - Reflected (AJAX/JSON) Low&Medium级别 直接注入方法 : AJAX端点 : xss_ajax_2-2.php?title= 也可直接注入 High级别 防御措施 :HTM实体编码 防御效果 :输入作为纯文本输出,无法执行 0x05 XSS - Reflected (AJAX/XML) Low&Medium级别 XML专用payload : 解释 : xmlns 定义XML命名空间,利用 onload 事件 High级别 防御措施 : htmlspecialchars() 函数 防御效果 :完全防护 0x06 XSS - Reflected (Back Button) Low级别 漏洞原理 :利用Referer头进行跳转 payload构造 : 攻击方法 :闭合input标签后注入 High级别 防御措施 :关键字转HTML实体 防御效果 :完全防护 0x07 XSS - Reflected (Custom Header) Low级别 攻击方法 :在HTTP头中添加恶意字段 Medium级别 过滤机制 : addslashes() (可绕过) High级别 防御措施 :HTML实体编码 防御效果 :完全防护 0x08 XSS - Reflected (Eval) Low&High级别 漏洞原理 : eval() 函数直接执行输入 payload : Medium级别 不影响 :仍可执行JS代码 0x09 XSS - Reflected (HREF) Low级别 方法一 :闭合p标签 方法二 :闭合链接 Medium&High级别 防御措施 : urlencode() 函数 防御效果 :完全防护 0x0A XSS - Reflected (Login Form) Low级别 漏洞发现 :通过SQL注入测试发现输出未过滤 payload : Medium级别 过滤机制 : addslashes() (可绕过) High级别 防御措施 : htmlspecialchars() 防御效果 :完全防护 0x0B XSS - Reflected (Referer) 同0x06关卡 0x0C XSS - Reflected (User-Agent) 修改User-Agent头注入 0x0D XSS - Stored (Blog) 同SQL注入存储型漏洞 0x0E XSS - Stored (Change Secret) Low级别 攻击步骤 : 修改密码为XSS payload 用户登录时触发 前端修改方法 : Medium级别 过滤机制 : addslashes() (可绕过) High级别 防御措施 : htmlspecialchars() 防御效果 :完全防护 0x0F XSS - Stored (User-Agent) 同SQL注入存储型漏洞 防御措施总结 有效防御 : HTML实体编码( htmlspecialchars() ) 上下文相关输出编码 内容安全策略(CSP) 无效/不足防御 : addslashes() (仅防SQL注入) urlencode() (不防XSS) 仅前端验证 最佳实践 : 输入验证 输出编码 使用安全框架 定期安全测试