WEB安全梳理-越权访问漏洞
字数 1550 2025-08-12 12:46:02
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传参的越权
案例:任意用户添加
- 场景:用户管理功能未验证权限
- 漏洞利用:
- 未登录或低权限用户直接发送添加用户请求:
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) 人为疏忽导致的问题
- 如测试接口未删除、默认密码未修改等
三、越权漏洞检测方法
-
平行越权检测:
- 使用两个同级权限账户
- 在一个账户中尝试操作另一个账户的数据
- 遍历ID参数测试数据隔离
-
垂直越权检测:
- 使用低权限账户
- 尝试访问高权限功能接口
- 检查URL参数、Cookie等身份标识是否可篡改
-
未授权访问检测:
- 目录扫描发现隐藏接口
- JS文件审计寻找敏感路径
- 测试直接访问管理接口
四、越权漏洞防护措施
-
权限验证原则:
- 前后端同时验证用户输入信息
- 执行关键操作前必须验证用户身份
- 验证用户是否具备操作特定数据的权限
-
数据访问控制:
- 直接对象引用加密资源ID,防止ID枚举
- 对敏感数据进行特殊化处理
- 实现严格的数据所有权验证
-
参数安全处理:
- 对所有可控参数进行严格检查和过滤
- 避免在客户端存储或传输敏感权限信息
- 服务端应维护完整的用户会话状态
-
安全开发实践:
- 采用最小权限原则设计系统
- 避免通过简单参数控制权限级别
- 定期进行权限逻辑的安全审计
通过以上防护措施,可以有效预防和减少越权访问漏洞的发生,保护系统数据和功能的安全。