【漏洞案例】三个XSS案例带你拓宽挖洞思路
字数 1594 2025-09-23 19:27:46

XSS漏洞挖掘实战案例教学文档

1. XSS漏洞概述

XSS(跨站脚本攻击)是一种常见的Web安全漏洞,攻击者能够在受害者的浏览器中执行恶意脚本。XSS漏洞具有以下特点:

  • 学习门槛低,适合安全入门
  • 挖掘范围广,几乎所有输入输出点都可能存在
  • 危害程度从低危到高危不等

2. 文件上传型XSS案例

2.1 漏洞发现过程

  1. 目标网站:某教育系统
  2. 攻击路径:个人信息->单位logo上传功能
  3. 技术细节:
    • 上传接口:/api/app-api/infra/file/upload
    • 修改请求参数:
      • 文件名改为xx.html
      • 文件内容为<script>alert(1)</script>
    • 服务器返回文件存储路径
    • 直接访问上传的HTML文件触发XSS

2.2 漏洞原理

  • 文件上传功能未对文件类型和内容进行严格过滤
  • 服务器直接存储并允许执行HTML文件中的脚本
  • 文件访问权限控制不严

2.3 修复建议

  1. 限制上传文件类型为图片格式
  2. 对上传文件内容进行检查
  3. 设置上传文件的访问权限
  4. 对HTML文件进行特殊处理或禁止上传

3. 存储桶配置不当型XSS案例

3.1 漏洞发现过程

  1. 目标系统:某管理系统
  2. 初始访问:
    • 账号:admin
    • 密码:空(通过JS审计发现的逻辑漏洞)
  3. 攻击路径:
    • 用户管理处点击用户头像,获取头像URL
    • 发现Host为obs.xxx.xxx:10443
    • 直接访问https://obs.xxx.xxx:10443/xxxxx/发现存储桶可列目录
    • 使用PUT方法写入HTML文件:
      <script>alert(1)</script>
      
    • 访问https://obs.xxx.xxx:10443/xxxxx/spike.html触发XSS

3.2 漏洞原理

  1. 云存储桶配置不当导致:
    • 匿名访问
    • 目录列表
    • 文件写入权限
  2. 组合漏洞:
    • 登录绕过(空密码)
    • 存储桶列目录
    • 任意文件写入
    • XSS执行

3.3 修复建议

  1. 加强认证机制,禁止空密码
  2. 配置存储桶访问权限:
    • 禁止匿名访问
    • 关闭目录列表
    • 限制写入权限
  3. 对存储内容进行安全扫描
  4. 设置CSP等浏览器安全策略

4. 站内信存储型XSS案例

4.1 漏洞发现过程

  1. 目标功能:站内信系统
  2. 攻击路径:
    • 在发送站内信的"主题"字段插入XSS payload
    • 返回发件箱查看已发送邮件
    • 主题字段未过滤导致XSS执行

4.2 漏洞原理

  • 用户输入未经过滤直接存储并显示
  • 输出时未进行HTML实体编码
  • 前后端均缺乏有效的输入验证

4.3 修复建议

  1. 对所有用户输入进行过滤和转义
  2. 实施严格的输出编码
  3. 使用安全的富文本处理库
  4. 设置Content Security Policy

5. XSS漏洞挖掘方法论

5.1 挖掘思路

  1. 寻找所有用户输入点:
    • 表单输入
    • URL参数
    • 文件上传
    • HTTP头
  2. 追踪数据流向:
    • 存储到数据库
    • 写入文件
    • 反射到页面
  3. 测试输出点:
    • HTML正文
    • JavaScript代码
    • 属性值
    • CSS样式

5.2 常用测试payload

<script>alert(1)</script>

<svg onload=alert(1)>
"><script>alert(1)</script>
javascript:alert(1)

5.3 高级技巧

  1. 结合其他漏洞:
    • 文件上传+HTML执行
    • 存储桶配置+XSS
    • CSRF+XSS
  2. 绕过过滤:
    • 大小写变异
    • 编码绕过
    • 利用HTML5新特性
  3. 持久化攻击:
    • 存储型XSS
    • DOM-based XSS

6. 防御措施总结

  1. 输入验证:

    • 白名单过滤
    • 数据类型检查
    • 长度限制
  2. 输出编码:

    • HTML实体编码
    • JavaScript编码
    • URL编码
  3. 安全配置:

    • 设置HttpOnly标志
    • 实施Content Security Policy
    • 禁用危险的内联脚本
  4. 安全开发:

    • 使用安全的框架和模板引擎
    • 定期安全培训
    • 代码审计和安全测试

7. 总结

通过这三个案例可以看出XSS漏洞的广泛存在形式和多样化的攻击场景。安全人员应当:

  1. 保持对XSS漏洞的高度敏感
  2. 掌握多种挖掘技巧
  3. 理解漏洞背后的根本原因
  4. 能够提出有效的修复方案

XSS漏洞虽然基础,但变化多端,需要安全人员持续学习和实践。

XSS漏洞挖掘实战案例教学文档 1. XSS漏洞概述 XSS(跨站脚本攻击)是一种常见的Web安全漏洞,攻击者能够在受害者的浏览器中执行恶意脚本。XSS漏洞具有以下特点: 学习门槛低,适合安全入门 挖掘范围广,几乎所有输入输出点都可能存在 危害程度从低危到高危不等 2. 文件上传型XSS案例 2.1 漏洞发现过程 目标网站:某教育系统 攻击路径:个人信息->单位logo上传功能 技术细节: 上传接口: /api/app-api/infra/file/upload 修改请求参数: 文件名改为 xx.html 文件内容为 <script>alert(1)</script> 服务器返回文件存储路径 直接访问上传的HTML文件触发XSS 2.2 漏洞原理 文件上传功能未对文件类型和内容进行严格过滤 服务器直接存储并允许执行HTML文件中的脚本 文件访问权限控制不严 2.3 修复建议 限制上传文件类型为图片格式 对上传文件内容进行检查 设置上传文件的访问权限 对HTML文件进行特殊处理或禁止上传 3. 存储桶配置不当型XSS案例 3.1 漏洞发现过程 目标系统:某管理系统 初始访问: 账号:admin 密码:空(通过JS审计发现的逻辑漏洞) 攻击路径: 用户管理处点击用户头像,获取头像URL 发现Host为 obs.xxx.xxx:10443 直接访问 https://obs.xxx.xxx:10443/xxxxx/ 发现存储桶可列目录 使用PUT方法写入HTML文件: 访问 https://obs.xxx.xxx:10443/xxxxx/spike.html 触发XSS 3.2 漏洞原理 云存储桶配置不当导致: 匿名访问 目录列表 文件写入权限 组合漏洞: 登录绕过(空密码) 存储桶列目录 任意文件写入 XSS执行 3.3 修复建议 加强认证机制,禁止空密码 配置存储桶访问权限: 禁止匿名访问 关闭目录列表 限制写入权限 对存储内容进行安全扫描 设置CSP等浏览器安全策略 4. 站内信存储型XSS案例 4.1 漏洞发现过程 目标功能:站内信系统 攻击路径: 在发送站内信的"主题"字段插入XSS payload 返回发件箱查看已发送邮件 主题字段未过滤导致XSS执行 4.2 漏洞原理 用户输入未经过滤直接存储并显示 输出时未进行HTML实体编码 前后端均缺乏有效的输入验证 4.3 修复建议 对所有用户输入进行过滤和转义 实施严格的输出编码 使用安全的富文本处理库 设置Content Security Policy 5. XSS漏洞挖掘方法论 5.1 挖掘思路 寻找所有用户输入点: 表单输入 URL参数 文件上传 HTTP头 追踪数据流向: 存储到数据库 写入文件 反射到页面 测试输出点: HTML正文 JavaScript代码 属性值 CSS样式 5.2 常用测试payload 5.3 高级技巧 结合其他漏洞: 文件上传+HTML执行 存储桶配置+XSS CSRF+XSS 绕过过滤: 大小写变异 编码绕过 利用HTML5新特性 持久化攻击: 存储型XSS DOM-based XSS 6. 防御措施总结 输入验证: 白名单过滤 数据类型检查 长度限制 输出编码: HTML实体编码 JavaScript编码 URL编码 安全配置: 设置HttpOnly标志 实施Content Security Policy 禁用危险的内联脚本 安全开发: 使用安全的框架和模板引擎 定期安全培训 代码审计和安全测试 7. 总结 通过这三个案例可以看出XSS漏洞的广泛存在形式和多样化的攻击场景。安全人员应当: 保持对XSS漏洞的高度敏感 掌握多种挖掘技巧 理解漏洞背后的根本原因 能够提出有效的修复方案 XSS漏洞虽然基础,但变化多端,需要安全人员持续学习和实践。