第四章 越权漏洞分类与危害:水平越权、垂直越权、未授权访问、实际案例损失分析
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 操作步骤(分类检测验证流程)
- 识别资源标识:找出 URL、请求体、Header 中的用户/订单/文件 ID 字段。
- 构造边界请求:使用另一用户的合法 替换目标 ID,发送等价请求。
- 重复检测水平越权:若返回非授权数据,则确认水平越权。
- 角色降级测试:将高权限接口的请求 Cookie/ 替换为低权限用户凭证,若操作成功则为垂直越权。
- 无凭证测试:直接访问目标接口,去掉所有认证 Header,观察响应状态码与内容。
- 记录详细请求和响应:保存完整的 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.7 输入输出物
| 类型 | 输入物 | 输出物 |
|---|---|---|
| 工具/脚本 | 接口列表(API Endpoints)、用户凭证池、权限映射表 | 越权发现记录表(漏洞ID、类型、复现步骤、请求/响应报文) |
| 文档 | 角色权限矩阵、业务流程图 | 越权风险评估报告、漏洞定级建议 |
| 日志 | 审计日志、WAF/API Gateway 日志 | 异常访问告警记录、关联 IP 与时间线 |
4.8 责任边界
- 安全审计团队:负责确认漏洞分类、危害评级,输出可复现的攻击请求。
- 开发团队:负责修复资源访问控制逻辑、添加权限校验中间件。
- 运维团队:负责配置 WAF 规则、限制敏感 API 的外网暴露。
- 合规/法务团队:评估数据泄露涉及的法律风险(GDPR、等保)。
4.9 记录材料
每次越权检测必须留存以下材料:
- 证据包:包含原始请求的 cURL 命令或 Burp Suite 导出文件
- 截图/日志:显示成功绕过认证的响应内容
- 影响范围:涉及的数据库表、用户数、敏感字段
- 漏洞复现步骤清单(至少包含以下要素)
| 字段 | 示例 |
|---|---|
| 漏洞类型 | 水平越权 |
| 目标接口 | |
| 攻击参数 | |
| 响应状态码 | 200 OK(预期应为 403) |
| 泄露数据 | 手机号、身份证、银行卡号 |
4.10 异常处理
典型异常与补救动作
| 异常情况 | 可能原因 | 补救动作 |
|---|---|---|
| 检测请求被 WAF 拦截(403) | 携带了恶意Payload | 改用合法 并调整请求频率;联系运维添加白名单 IP |
| 认证系统返回 401 无区分 | 统一错误处理,掩盖存在漏洞的接口 | 构造多组凭证,检查不同角色的响应差异;需配合日志审计 |
| 响应中包含通用错误消息(如“权限不足”) | 已部分修复但仍有绕过的可能 | 深入测试参数位置(Header/Body/Cookie) |
| 同一个 可同时访问多个用户数据 | 会话复用或用户切换逻辑缺陷 | 建议开发会话绑定策略,记录 service-worker 调用链 |
4.11 验收标准
- 分类覆盖率:水平越权、垂直越权、未授权访问三类均被测过。
- 危害量化:每个发现的漏洞已使用 CVSS 3.1 计算基本分并记录。
- 证据完整:每个漏洞的请求/响应报文、时间戳、登录凭证均存档。
- 修复验证闭环:修复后至少通过 3 次以上不同角度的绕过测试确认不再可越权。
- 文档可追溯:输出物中的漏洞编号与 Jira/禅道中的工单一一对应。
实战建议:对金融、医疗等高敏系统,水平越权的危害往往被低估。建议每季度针对全量 API 执行一次三类越权的全量扫描,并将结果纳入安全 KPI 考核。