第四章 越权漏洞分类与危害:水平越权、垂直越权、未授权访问、实际案例损失分析

4.1 本章概述

越权漏洞是动态权限审计的核心检测对象。本章系统定义三种典型越权类型的结构、攻击模式与危害等级,并结合实际案例量化经济损失与数据泄露风险,为后续检测规则设计与修复策略提供客观依据。

4.2 适用场景

  • Web 应用、API、微服务架构的权限边界评审阶段
  • IAM(身份与访问管理)体系风险评估
  • 安全审计团队编写越权检测用例前
  • 开发团队进行权限模型重构或接口改造时

4.3 前置条件

  • 已完成系统角色划分与权限矩阵初稿
  • 具备可访问的测试环境或审计日志源
  • 审计人员了解 HTTP 请求/响应、JWT/Session 基本机制
  • 已收集至少 3 个典型业务场景(如订单查看、用户资料编辑、管理员操作)

4.4 越权分类与危害对照表

漏洞类型 本质 攻击路径 典型危害 CVSS 典型评分
水平越权 同角色用户间横向访问非授权资源 修改 URL 中的用户ID、订单ID 他人隐私泄露、账户资金盗用 6.5 – 7.5
垂直越权 低权限用户提权执行高权限操作 绕过前端按钮、直接调用 admin API 系统接管、数据全量泄露 8.0 – 9.8
未授权访问 无身份下直接访问需认证的资源 直接请求内网/外网接口、静态文件 敏感数据完全公开、服务器信息泄露 7.5 – 9.5

4.5 操作步骤(分类检测验证流程)

  1. 识别资源标识:找出 URL、请求体、Header 中的用户/订单/文件 ID 字段。
  2. 构造边界请求:使用另一用户的合法 替换目标 ID,发送等价请求。
  3. 重复检测水平越权:若返回非授权数据,则确认水平越权。
  4. 角色降级测试:将高权限接口的请求 Cookie/ 替换为低权限用户凭证,若操作成功则为垂直越权。
  5. 无凭证测试:直接访问目标接口,去掉所有认证 Header,观察响应状态码与内容。
  6. 记录详细请求和响应:保存完整的 HTTP 交互用于证据固定。

关键检测脚本示例(测试用,非生产)

# 水平越权测试:替换目标用户ID
curl -X GET "https://api.example.com/order/1001" \
  -H "Authorization: Bearer {userA_}"  # 预期仅能访问自己的订单

# 修改ID为他人订单
curl -X GET "https://api.example.com/order/1002" \
  -H "Authorization: Bearer {userA_}"  # 若返回200且包含1002数据 --> 水平越权

4.6 核心结构:越权攻击关系图

越权漏洞分类与关系结构图 图4-1 越权漏洞分类、攻击方向与危害传导 资源标识(ID/Tenant/Cookie) 水平越权(同角色互访) 垂直越权(低权限提权) 未授权访问(无凭证) 用户隐私泄露 / 账户盗用 示例:医患信息爬取 系统完全接管 示例:后台创建管理员 数据全量公开 示例:云存储未授权遍历 危害三级传导 资源标识失控 → 越权漏洞 → 数据泄露/系统沦陷 平均修复成本:$150,000 – $3,000,000(案例统计)

4.7 输入输出物

类型 输入物 输出物
工具/脚本 接口列表(API Endpoints)、用户凭证池、权限映射表 越权发现记录表(漏洞ID、类型、复现步骤、请求/响应报文)
文档 角色权限矩阵、业务流程图 越权风险评估报告、漏洞定级建议
日志 审计日志、WAF/API Gateway 日志 异常访问告警记录、关联 IP 与时间线

4.8 责任边界

  • 安全审计团队:负责确认漏洞分类、危害评级,输出可复现的攻击请求。
  • 开发团队:负责修复资源访问控制逻辑、添加权限校验中间件。
  • 运维团队:负责配置 WAF 规则、限制敏感 API 的外网暴露。
  • 合规/法务团队:评估数据泄露涉及的法律风险(GDPR、等保)。

4.9 记录材料

每次越权检测必须留存以下材料:

  • 证据包:包含原始请求的 cURL 命令或 Burp Suite 导出文件
  • 截图/日志:显示成功绕过认证的响应内容
  • 影响范围:涉及的数据库表、用户数、敏感字段
  • 漏洞复现步骤清单(至少包含以下要素)
字段 示例
漏洞类型 水平越权
目标接口
GET /api/v2/user/profile/{userId}
攻击参数
userId: 1003 → 1004
响应状态码 200 OK(预期应为 403)
泄露数据 手机号、身份证、银行卡号

4.10 异常处理

典型异常与补救动作

异常情况 可能原因 补救动作
检测请求被 WAF 拦截(403) 携带了恶意Payload 改用合法 并调整请求频率;联系运维添加白名单 IP
认证系统返回 401 无区分 统一错误处理,掩盖存在漏洞的接口 构造多组凭证,检查不同角色的响应差异;需配合日志审计
响应中包含通用错误消息(如“权限不足”) 已部分修复但仍有绕过的可能 深入测试参数位置(Header/Body/Cookie)
同一个 可同时访问多个用户数据 会话复用或用户切换逻辑缺陷 建议开发会话绑定策略,记录 service-worker 调用链

4.11 验收标准

  • 分类覆盖率:水平越权、垂直越权、未授权访问三类均被测过。
  • 危害量化:每个发现的漏洞已使用 CVSS 3.1 计算基本分并记录。
  • 证据完整:每个漏洞的请求/响应报文、时间戳、登录凭证均存档。
  • 修复验证闭环:修复后至少通过 3 次以上不同角度的绕过测试确认不再可越权。
  • 文档可追溯:输出物中的漏洞编号与 Jira/禅道中的工单一一对应。

实战建议:对金融、医疗等高敏系统,水平越权的危害往往被低估。建议每季度针对全量 API 执行一次三类越权的全量扫描,并将结果纳入安全 KPI 考核。