WEB漏洞——越权
字数 1474 2025-08-29 08:29:58
WEB漏洞——越权漏洞详解与防御
一、越权漏洞概述
越权漏洞是指应用程序在权限控制上存在缺陷,导致攻击者能够访问或操作超出其权限范围的功能或数据。这类漏洞属于逻辑安全漏洞,根源在于服务器对客户端请求过度信任,缺乏严格的权限验证机制。
核心特征:
- 攻击者可查看敏感信息
- 可执行数据的增、删、改、查等操作
- 通常出现在需要用户登录的权限页面中
二、越权漏洞分类
1. 水平越权(横向越权)
定义:同级别用户之间的越权行为,攻击者通过修改身份标识获取其他同级用户的数据。
产生原因:
- 程序未验证数据所属人
- 从用户提交的表单参数中获取userid进行验证
常见场景:
- 基于用户身份的ID(用户ID、账号、手机号等)
- 基于对象ID(订单号、记录号等)
- 基于文件名(用户上传文件场景)
攻击方式:
修改请求中的身份标识(如ID、用户名等),使A账号可操作B账号的数据
2. 垂直越权(纵向越权)
定义:不同级别或角色间的越权行为,分为向上越权和向下越权。
子类型:
- 向上越权:低权限用户获取高权限功能(如普通用户访问管理员功能)
- 向下越权:高权限用户访问低权限用户信息(涉及隐私问题)
常见场景:
- 未认证账户访问需认证功能
- 无权限账户成功访问受限功能
三、漏洞成因分析
-
前端安全缺陷:
- 仅通过界面显示控制权限(如普通用户界面隐藏管理员功能)
- 未在后端进行实际权限验证
-
后端安全缺陷:
- 用户权限验证不严格
- 数据库设计问题(如管理员和普通用户同表)
- 关键操作前未验证用户身份和权限
四、实战案例分析
水平越权案例(Pikachu靶场)
场景:
- 已知账号:lucy/123456、lili/123456、kobe/123456
- 登录lucy账号并抓包,修改请求中的username为kobe
- 成功以lucy身份获取kobe的信息
攻击原理:
后端仅依赖请求中的username参数进行身份识别,未验证当前会话用户是否有权访问目标账号数据
垂直越权案例(Pikachu靶场)
场景:
- 管理员账号:admin/123456
- 普通账号:pikachu/000000
- 管理员有"添加用户"功能,普通用户无此功能
攻击步骤:
- 登录普通用户pikachu
- 抓取管理员添加用户的数据包
- 将数据包中的Cookie替换为普通用户的Cookie
- 成功以普通用户身份执行添加用户操作
攻击原理:
后端仅验证Cookie有效性,未验证该用户是否具有执行添加用户操作的权限
五、防御方案
1. 验证机制
- 双重验证:前后端同时验证用户输入和权限
- 功能调用前验证:检查用户是否有权调用该功能
- 关键操作验证:执行前必须验证用户身份和操作权限
2. 数据保护
- 加密资源ID:防止攻击者枚举ID
- 敏感数据特殊处理:对敏感数据进行额外保护
- 最小权限原则:用户只能访问必要的数据和功能
3. 开发实践
- 不信任用户输入:对所有可控参数进行严格检查和过滤
- 权限与身份分离:不从用户提交的参数中获取验证信息
- 基于角色的访问控制(RBAC):实现清晰的权限划分
4. 会话管理
- 会话绑定:将用户会话与权限级别紧密绑定
- 敏感操作重新认证:执行关键操作时要求重新输入密码或二次验证
六、总结
越权漏洞是WEB应用中常见的高风险漏洞,攻击者可利用它获取未授权访问或执行未授权操作。防御关键在于:
- 实施严格的权限验证机制
- 遵循"不信任用户输入"原则
- 前后端协同进行权限控制
- 对敏感操作实施额外保护措施
通过全面的权限控制和输入验证,可有效防范越权漏洞带来的安全风险。