WEB安全梳理-越权访问漏洞
字数 1550 2025-08-12 12:46:02

WEB安全梳理:越权访问漏洞详解与防护

一、越权访问漏洞概述

越权访问漏洞属于逻辑漏洞范畴,指系统未能正确验证用户权限,导致用户可以访问或操作超出其权限范围的数据或功能。根据权限关系不同,越权访问可分为两类:

  1. 平行越权(横向越权):权限平级的两个用户之间的越权访问

    • 用户A可以操作用户B的数据(如查看、修改、删除)
    • 通常由于系统未验证操作数据是否属于当前用户
  2. 垂直越权:权限不等的两个用户之间的越权访问

    • 低权限用户访问高权限用户的功能或数据
    • 如普通用户访问管理员功能

二、越权访问常见场景与案例

1. 基于GET传参的越权

平行越权案例

  • 场景:系统API通过GET参数标识用户数据
  • 漏洞利用
    • 用户登录后访问/api/user/123查看自己信息
    • 通过遍历ID参数(如改为/api/user/124)可查看其他用户信息
  • 影响:可获取系统中所有用户的敏感信息(身份证号、邮箱、手机号等)

垂直越权案例

  • 场景:系统通过URL参数userType标识用户角色
  • 漏洞利用
    • 测试用户登录后跳转./zfjg/index.html?userType=2
    • 管理员登录后跳转./zfjg/index.html?userType=0
    • 修改参数为userType=0即可获得管理员权限

2. 基于POST传参的越权

案例:任意用户添加

  • 场景:用户管理功能未验证权限
  • 漏洞利用
    • 未登录或低权限用户直接发送添加用户请求:
      POST /form/addUser HTTP/1.1
      Host: x
      Content-Type: application/x-www-form-urlencoded
      Content-Length: 99
      
      username=admin1&login_passwd=admin&confirm_login_passwd=admin&isAdmin=0&Add_user=确定
      
    • 可成功添加任意用户,包括管理员账户

3. 基于Cookie传参的越权

案例:Zyxel NBG2105身份验证绕过(CVE-2021-3297)

  • 漏洞原理:前端JS通过Cookie中的login参数验证登录状态
  • 漏洞利用
    • 直接访问http://xxx.xxx.xxx.xxx/login_ok.htm
    • 设置Cookie: login=1
    • 系统将跳转到管理员界面home.htm

4. 未授权访问

未授权访问广义上属于越权的一种,可分为三类:

1) 修改响应码绕过

  • 常见响应码:200、000000、true、0、success、ok、1
  • 案例
    • 登录接口返回{"status":1}表示密码错误
    • 拦截响应,修改为{"status":0}可绕过验证
    • 丢弃后续的Cookie请求直接进入后台

2) 直接未授权访问

  • 发现方法
    • 使用目录扫描工具(如Dirsearch)
    • JS文件审计(推荐JSFinder工具)
  • 案例
    • 扫描发现/main.html可直接访问后台
    • 无需任何认证即可操作系统功能

3) 人为疏忽导致的问题

  • 如测试接口未删除、默认密码未修改等

三、越权漏洞检测方法

  1. 平行越权检测

    • 使用两个同级权限账户
    • 在一个账户中尝试操作另一个账户的数据
    • 遍历ID参数测试数据隔离
  2. 垂直越权检测

    • 使用低权限账户
    • 尝试访问高权限功能接口
    • 检查URL参数、Cookie等身份标识是否可篡改
  3. 未授权访问检测

    • 目录扫描发现隐藏接口
    • JS文件审计寻找敏感路径
    • 测试直接访问管理接口

四、越权漏洞防护措施

  1. 权限验证原则

    • 前后端同时验证用户输入信息
    • 执行关键操作前必须验证用户身份
    • 验证用户是否具备操作特定数据的权限
  2. 数据访问控制

    • 直接对象引用加密资源ID,防止ID枚举
    • 对敏感数据进行特殊化处理
    • 实现严格的数据所有权验证
  3. 参数安全处理

    • 对所有可控参数进行严格检查和过滤
    • 避免在客户端存储或传输敏感权限信息
    • 服务端应维护完整的用户会话状态
  4. 安全开发实践

    • 采用最小权限原则设计系统
    • 避免通过简单参数控制权限级别
    • 定期进行权限逻辑的安全审计

通过以上防护措施,可以有效预防和减少越权访问漏洞的发生,保护系统数据和功能的安全。

WEB安全梳理:越权访问漏洞详解与防护 一、越权访问漏洞概述 越权访问漏洞属于逻辑漏洞范畴,指系统未能正确验证用户权限,导致用户可以访问或操作超出其权限范围的数据或功能。根据权限关系不同,越权访问可分为两类: 平行越权(横向越权) :权限平级的两个用户之间的越权访问 用户A可以操作用户B的数据(如查看、修改、删除) 通常由于系统未验证操作数据是否属于当前用户 垂直越权 :权限不等的两个用户之间的越权访问 低权限用户访问高权限用户的功能或数据 如普通用户访问管理员功能 二、越权访问常见场景与案例 1. 基于GET传参的越权 平行越权案例 场景 :系统API通过GET参数标识用户数据 漏洞利用 : 用户登录后访问 /api/user/123 查看自己信息 通过遍历ID参数(如改为 /api/user/124 )可查看其他用户信息 影响 :可获取系统中所有用户的敏感信息(身份证号、邮箱、手机号等) 垂直越权案例 场景 :系统通过URL参数 userType 标识用户角色 漏洞利用 : 测试用户登录后跳转 ./zfjg/index.html?userType=2 管理员登录后跳转 ./zfjg/index.html?userType=0 修改参数为 userType=0 即可获得管理员权限 2. 基于POST传参的越权 案例:任意用户添加 场景 :用户管理功能未验证权限 漏洞利用 : 未登录或低权限用户直接发送添加用户请求: 可成功添加任意用户,包括管理员账户 3. 基于Cookie传参的越权 案例:Zyxel NBG2105身份验证绕过(CVE-2021-3297) 漏洞原理 :前端JS通过Cookie中的 login 参数验证登录状态 漏洞利用 : 直接访问 http://xxx.xxx.xxx.xxx/login_ok.htm 设置Cookie: login=1 系统将跳转到管理员界面 home.htm 4. 未授权访问 未授权访问广义上属于越权的一种,可分为三类: 1) 修改响应码绕过 常见响应码 :200、000000、true、0、success、ok、1 案例 : 登录接口返回 {"status":1} 表示密码错误 拦截响应,修改为 {"status":0} 可绕过验证 丢弃后续的Cookie请求直接进入后台 2) 直接未授权访问 发现方法 : 使用目录扫描工具(如Dirsearch) JS文件审计(推荐JSFinder工具) 案例 : 扫描发现 /main.html 可直接访问后台 无需任何认证即可操作系统功能 3) 人为疏忽导致的问题 如测试接口未删除、默认密码未修改等 三、越权漏洞检测方法 平行越权检测 : 使用两个同级权限账户 在一个账户中尝试操作另一个账户的数据 遍历ID参数测试数据隔离 垂直越权检测 : 使用低权限账户 尝试访问高权限功能接口 检查URL参数、Cookie等身份标识是否可篡改 未授权访问检测 : 目录扫描发现隐藏接口 JS文件审计寻找敏感路径 测试直接访问管理接口 四、越权漏洞防护措施 权限验证原则 : 前后端同时验证用户输入信息 执行关键操作前必须验证用户身份 验证用户是否具备操作特定数据的权限 数据访问控制 : 直接对象引用加密资源ID,防止ID枚举 对敏感数据进行特殊化处理 实现严格的数据所有权验证 参数安全处理 : 对所有可控参数进行严格检查和过滤 避免在客户端存储或传输敏感权限信息 服务端应维护完整的用户会话状态 安全开发实践 : 采用最小权限原则设计系统 避免通过简单参数控制权限级别 定期进行权限逻辑的安全审计 通过以上防护措施,可以有效预防和减少越权访问漏洞的发生,保护系统数据和功能的安全。