横向越权与纵向越权漏洞

admin
52
2025-03-13

一、横向越权(水平越权)

  1. 定义与原理 横向越权是指 ​相同权限层级的用户 通过绕过资源归属验证,非法访问或操作其他同级用户的数据或功能。其本质是系统未严格校验“当前用户是否有权操作目标资源”。

  2. 攻击方式

    • 参数篡改:直接修改请求中的标识参数(如用户ID、订单ID)。

      GET /api/user?uid=123 → 篡改为 uid=456
    • 路径遍历:利用未过滤的路径参数访问其他用户文件。

      GET /download?file=userA/photo.jpg → 篡改为 file=../config/db.conf
    • 批量枚举:通过遍历ID范围(如1~1000)获取大量用户数据。

  3. 技术细节

    • 漏洞根源

      • 后端接口直接信任客户端提交的资源标识符(如uidorder_id)。

      • 未在数据库查询中绑定当前用户身份(如SELECT * FROM orders WHERE id={order_id} AND user_id={current_user})。

    • 高危场景

      • 用户个人中心、订单管理、文件下载等涉及用户唯一标识的功能。

  4. 检测方法

    • 手动测试:修改请求参数(如Cookie、URL、Body中的ID),观察是否返回非归属数据。

    • 工具辅助:使用Burp Suite的Intruder模块批量枚举ID,检测越权响应(HTTP 200)。

    • 代码审计:检查后端是否对资源操作进行用户身份绑定。

  5. 防御方案

    • 强制绑定用户身份:所有资源操作需关联当前会话用户。

    • 禁用客户端可控标识符:资源ID应通过服务端生成(如UUID),而非自增数字。

    • 日志监控:记录异常ID访问行为,触发告警(如同一用户频繁访问不同ID)。


二、纵向越权(垂直越权)

  1. 定义与原理 纵向越权是指 ​低权限用户 通过绕过权限校验,非法获取高权限功能或数据(如普通用户访问管理员接口)。其核心问题是系统未严格分离角色权限层级。

  2. 攻击方式

    • 直接访问高权限接口:猜测或探测管理员API路径。

      GET /admin/deleteAllUsers → 普通用户直接调用
    • 请求头篡改:伪造角色字段(如X-User-Role: admin)。

    • 功能滥用:利用业务逻辑漏洞间接提权(如普通用户触发后台任务)。

  3. 技术细节

    • 漏洞根源

      • 权限校验依赖客户端传递的参数(如role=admin)。

      • 未对敏感接口强制角色验证(如缺少@PreAuthorize("hasRole('ADMIN')"))。

    • 高危场景

      • 后台管理功能、数据导出接口、系统配置修改等。

  4. 检测方法

    • 接口探测:使用目录爆破工具(如DirBuster)扫描/admin/api/v1/admin等路径。

    • 权限参数篡改:修改请求中的角色/权限字段,观察是否绕过校验。

    • 代码审计:检查接口是否遗漏权限注解,或硬编码测试账号权限。

  5. 防御方案

    • 基于角色的访问控制:每次调用数据前都对用户身份进行验证。

    • 服务端动态鉴权:权限信息从数据库或Token中获取,禁止客户端修改。

    • 最小化权限分配:默认拒绝所有请求,按需开放必要权限。


三、横向与纵向越权对比

维度

横向越权

纵向越权

攻击目标

同一层级用户的资源(如用户A→用户B)

高层级权限功能(如普通用户→管理员)

漏洞触发点

资源ID未绑定用户身份

接口或功能未校验角色权限

防御重点

数据隔离 + 资源归属校验

权限分层 + 最小化授权原则

检测工具

Burp Intruder、Postman参数遍历

DirBuster、SQLMap提权测试


四、真实漏洞案例

  1. 横向越权案例

    • 某银行APP漏洞:通过修改account_id参数,可查看他人银行卡余额。

    • 漏洞修复:后端在查询时强制绑定用户ID与账户ID关联。

  2. 纵向越权案例

    • 某CMS系统漏洞:普通用户通过/admin/install接口重装系统,清空数据库。

    • 漏洞修复:隐藏后台接口,增加管理员Token验证。


五、总结

  • 横向越权:关注 数据归属,需强化“谁的数据谁管理”逻辑。

  • 纵向越权:关注 权限边界,需严格分离角色与功能权限。

  • 通用防护

    • 输入输出过滤(如防止路径遍历、SQL注入)。

    • 自动化漏洞扫描(如OWASP ZAP、Acunetix)。

    • 定期渗透测试与代

动物装饰