服务器端漏洞篇之访问控制漏洞与越权专题
字数 1887 2025-08-10 16:34:31

访问控制漏洞与越权专题教学文档

一、访问控制基础概念

1. 访问控制定义

访问控制(Authorization)是明确用户权限的机制,在Web应用中取决于:

  • 身份验证(Authentication):确认用户身份
  • 会话管理(Session Management):管理用户HTTP请求

2. 访问控制分类

从用户角度分为三类:

  1. 垂直访问控制:限制不同类型用户间的权限(如管理员与普通用户)
  2. 水平访问控制:限制同一类型用户间的权限(如用户A不能访问用户B的数据)
  3. 上下文相关访问控制:根据应用状态或用户交互限制权限

二、垂直越权漏洞

1. 未受保护的功能

漏洞原理:敏感功能未做访问控制限制
发现方法

  • 检查robots.txt文件
  • 目录扫描
  • 前端代码分析(如JavaScript中的管理路径)

靶场示例1

  1. 访问robots.txt发现/admin路径
  2. 普通用户直接访问/admin可进入管理面板

靶场示例2

  1. 检查前端JS发现管理员路径逻辑
  2. 直接访问该路径绕过权限检查

2. 基于参数的访问控制

漏洞原理:通过URL参数控制权限(如?admin=true)
靶场示例1

  1. 发现Cookie中有"Admin=false"参数
  2. 修改为"Admin=true"获取管理员权限

靶场示例2

  1. 在用户配置请求中发现roleid字段
  2. 修改roleid为管理员值(如2)提升权限

3. 配置错误导致的绕过

漏洞类型1:非标准HTTP头部覆盖

  • 使用X-Original-URL或X-Rewrite-URL覆盖请求URL
  • 绕过前端校验直接访问受限URL

靶场示例

  1. 使用X-Original-URL: /admin访问管理功能
  2. 同样方法执行删除用户操作

漏洞类型2:HTTP方法限制不严

  • 将POST改为GET或其他方法绕过限制

靶场示例

  1. 拦截管理员权限提升请求
  2. 将POST改为GET并添加必要参数
  3. 使用普通用户会话执行请求

4. URL匹配差异

漏洞原理

  • 大小写不敏感:/ADMIN == /admin
  • 文件扩展名映射:/admin.anything == /admin
  • 尾部斜杠差异:/admin/ != /admin

三、水平越权漏洞

1. 基于可预测参数

靶场示例1

  1. 发现URL中包含用户ID参数(如?id=123)
  2. 修改为目标用户ID获取其数据

2. 基于不可预测参数

靶场示例2

  1. 发现使用GUID作为用户标识
  2. 从评论区等公开位置获取其他用户GUID
  3. 替换参数获取目标用户数据

3. 重定向泄漏

靶场示例3

  1. 修改用户ID触发重定向
  2. 在重定向响应中找到泄漏的敏感数据

四、水平到垂直越权

靶场示例

  1. 发现响应中包含用户密码
  2. 修改ID为administrator获取管理员密码
  3. 使用密码登录管理员账户

五、不安全的直接对象引用(IDOR)

1. 数据库对象引用

漏洞示例
https://insecure-website.com/customer_account?customer_number=132355

  • 通过修改customer_number访问不同用户数据

2. 静态文件引用

漏洞示例
https://insecure-website.com/static/12144.txt

  • 通过修改文件名获取其他用户文件

靶场示例

  1. 发现聊天记录文件按数字编号
  2. 修改文件编号下载其他用户聊天记录
  3. 从中获取密码等敏感信息

六、多步骤流程漏洞

漏洞原理:多步骤功能中某一步骤缺少访问控制
靶场示例

  1. 管理员执行权限提升流程:加载→提交→确认
  2. 普通用户直接发送确认步骤请求
  3. 绕过前两步的权限检查

七、基于HTTP头部的访问控制

1. Referer控制

漏洞原理:仅依赖Referer头部验证请求来源
靶场示例

  1. 复制管理员请求
  2. 保留Referer头,替换为普通用户会话
  3. 绕过权限检查

2. Location控制

漏洞原理:基于地理位置限制访问
绕过方法:使用VPN等工具伪造位置

八、防护建议

  1. 不要依赖混淆:仅靠隐藏路径/文件名不安全
  2. 默认拒绝:非公开资源默认拒绝访问
  3. 统一机制:使用应用程序范围的统一访问控制机制
  4. 显式声明:为每个资源明确声明访问权限
  5. 严格审计:全面测试访问控制策略

九、总结

访问控制漏洞主要分为垂直越权和水平越权两类,产生原因包括:

  • 功能未受保护
  • 参数控制不安全
  • 配置错误
  • URL匹配问题
  • 多步骤流程缺陷
  • HTTP头部依赖

防护关键在于实施严格的、统一的访问控制策略,并进行全面测试。

访问控制漏洞与越权专题教学文档 一、访问控制基础概念 1. 访问控制定义 访问控制(Authorization)是明确用户权限的机制,在Web应用中取决于: 身份验证(Authentication):确认用户身份 会话管理(Session Management):管理用户HTTP请求 2. 访问控制分类 从用户角度分为三类: 垂直访问控制 :限制不同类型用户间的权限(如管理员与普通用户) 水平访问控制 :限制同一类型用户间的权限(如用户A不能访问用户B的数据) 上下文相关访问控制 :根据应用状态或用户交互限制权限 二、垂直越权漏洞 1. 未受保护的功能 漏洞原理 :敏感功能未做访问控制限制 发现方法 : 检查robots.txt文件 目录扫描 前端代码分析(如JavaScript中的管理路径) 靶场示例1 : 访问robots.txt发现/admin路径 普通用户直接访问/admin可进入管理面板 靶场示例2 : 检查前端JS发现管理员路径逻辑 直接访问该路径绕过权限检查 2. 基于参数的访问控制 漏洞原理 :通过URL参数控制权限(如?admin=true) 靶场示例1 : 发现Cookie中有"Admin=false"参数 修改为"Admin=true"获取管理员权限 靶场示例2 : 在用户配置请求中发现roleid字段 修改roleid为管理员值(如2)提升权限 3. 配置错误导致的绕过 漏洞类型1 :非标准HTTP头部覆盖 使用X-Original-URL或X-Rewrite-URL覆盖请求URL 绕过前端校验直接访问受限URL 靶场示例 : 使用X-Original-URL: /admin访问管理功能 同样方法执行删除用户操作 漏洞类型2 :HTTP方法限制不严 将POST改为GET或其他方法绕过限制 靶场示例 : 拦截管理员权限提升请求 将POST改为GET并添加必要参数 使用普通用户会话执行请求 4. URL匹配差异 漏洞原理 : 大小写不敏感:/ADMIN == /admin 文件扩展名映射:/admin.anything == /admin 尾部斜杠差异:/admin/ != /admin 三、水平越权漏洞 1. 基于可预测参数 靶场示例1 : 发现URL中包含用户ID参数(如?id=123) 修改为目标用户ID获取其数据 2. 基于不可预测参数 靶场示例2 : 发现使用GUID作为用户标识 从评论区等公开位置获取其他用户GUID 替换参数获取目标用户数据 3. 重定向泄漏 靶场示例3 : 修改用户ID触发重定向 在重定向响应中找到泄漏的敏感数据 四、水平到垂直越权 靶场示例 : 发现响应中包含用户密码 修改ID为administrator获取管理员密码 使用密码登录管理员账户 五、不安全的直接对象引用(IDOR) 1. 数据库对象引用 漏洞示例 : https://insecure-website.com/customer_account?customer_number=132355 通过修改customer_ number访问不同用户数据 2. 静态文件引用 漏洞示例 : https://insecure-website.com/static/12144.txt 通过修改文件名获取其他用户文件 靶场示例 : 发现聊天记录文件按数字编号 修改文件编号下载其他用户聊天记录 从中获取密码等敏感信息 六、多步骤流程漏洞 漏洞原理 :多步骤功能中某一步骤缺少访问控制 靶场示例 : 管理员执行权限提升流程:加载→提交→确认 普通用户直接发送确认步骤请求 绕过前两步的权限检查 七、基于HTTP头部的访问控制 1. Referer控制 漏洞原理 :仅依赖Referer头部验证请求来源 靶场示例 : 复制管理员请求 保留Referer头,替换为普通用户会话 绕过权限检查 2. Location控制 漏洞原理 :基于地理位置限制访问 绕过方法 :使用VPN等工具伪造位置 八、防护建议 不要依赖混淆 :仅靠隐藏路径/文件名不安全 默认拒绝 :非公开资源默认拒绝访问 统一机制 :使用应用程序范围的统一访问控制机制 显式声明 :为每个资源明确声明访问权限 严格审计 :全面测试访问控制策略 九、总结 访问控制漏洞主要分为垂直越权和水平越权两类,产生原因包括: 功能未受保护 参数控制不安全 配置错误 URL匹配问题 多步骤流程缺陷 HTTP头部依赖 防护关键在于实施严格的、统一的访问控制策略,并进行全面测试。