越权漏洞(IDOR)的案例以及理解
字数 1309 2025-08-15 21:32:39
IDOR(越权漏洞)深度解析与实战案例
一、IDOR漏洞概述
IDOR(Insecure Direct Object References,不安全的直接对象引用)是OWASP TOP 10中排名第四的高危漏洞。该漏洞轻则导致信息泄露,重则可实现权限提升,对系统安全构成严重威胁。
核心概念
- 本质:越权漏洞,涉及增删改查操作的权限控制问题
- 与SQL注入对比:
- SQL注入影响SQL执行语法层面
- IDOR影响SQL执行业务逻辑层面
- 两种逻辑类型:
- POP逻辑("改改参数"):直接修改参数实现越权
- ROP逻辑(组合越权):通过多个步骤组合实现的越权
二、IDOR漏洞分类与案例
1. 组合越权案例
场景描述:
某销售业绩平台的登录功能流程:
- 用户名查询对应ID
- 密码使用RSA加密
- 输入验证码
- 将ID、验证码、密码密文发送至后端
- 后端返回用户信息的JSON
漏洞利用链:
- 正常登录用户(通过用户提供/社工获取密码)
- 访问销售业绩排名功能,获取用户名对应ID
- 查询销售所属机构时,可获取当前用户的密文密码
- 替换用户ID可获取其他用户密码密文
- 使用获取的ID和密码密文实现任意用户登录
漏洞逻辑总结:
登录用户 → 排行榜获取用户ID → 替换ID查询所属机构获取密码密文 → 返回登录界面使用ID和密码密文 → 实现任意用户登录
2. 提权案例
场景描述:
老平台中低权限用户的权限查询模块(常与修改密码功能放在一起)
漏洞特征:
- 参数中包含权限数字或ID令牌
- 修改这些参数可能触发权限变更
漏洞原理:
- 平台根据权限令牌判断业务逻辑
- 修改令牌会触发高权限用户的逻辑代码
- 导致权限提升漏洞
三、IDOR漏洞挖掘方法论
1. 核心思路
- 业务逻辑导向:深入理解业务流程,从业务流角度思考安全隐患
- 参数分析:重点关注涉及用户身份、权限的参数(ID、token等)
- 功能关联:寻找功能间的关联性和数据流向
2. 挖掘技巧
-
参数篡改测试:
- 修改URL、表单、Cookie中的ID类参数
- 尝试递增/递减数字ID
- 替换为其他用户的已知ID
-
功能链分析:
- 梳理功能间的数据传递关系
- 寻找可串联利用的功能点(如案例中的排行榜→机构查询)
-
权限边界测试:
- 测试低权限用户能否访问高权限功能
- 检查权限校验是否仅依赖前端控制
四、防御措施
1. 访问控制原则
- 实施最小权限原则
- 服务端必须进行权限验证
- 避免仅依赖前端控制
2. 技术实现
-
间接引用映射:
- 使用随机生成的UUID替代连续数字ID
- 实现用户与资源的间接映射
-
权限验证:
- 每次数据访问前验证用户权限
- 实现基于角色的访问控制(RBAC)
-
敏感数据保护:
- 加密存储敏感信息
- 避免直接返回密码相关数据(即使是密文)
-
审计日志:
- 记录关键操作的访问日志
- 监控异常访问模式
五、总结
IDOR是一类需要紧密结合业务逻辑的安全漏洞,其表现形式多样,关键在于:
- 深入理解业务流程和数据流向
- 不局限于单一参数修改,寻找功能组合利用的可能性
- 重视权限验证的完整性和一致性
防御IDOR需要从设计阶段就考虑权限控制体系,并在实现层面确保每个数据访问都经过严格的权限验证。