挖洞经验 | 如何发现更多的IDOR漏洞(越权漏洞)
字数 1859 2025-08-18 11:39:11
深入理解与挖掘IDOR漏洞(越权漏洞)的全面指南
一、IDOR漏洞概述
IDOR(Insecure Direct Object Reference)即"不安全的直接对象引用",属于越权漏洞(Broken Access Control)范畴,也被归类为逻辑漏洞或访问控制漏洞。
核心特征:当应用程序基于用户提供的输入对象进行访问时,未进行适当的权限验证,导致用户可以访问或操作未授权的资源。
二、IDOR漏洞的多样化表现形式
1. 传统数字ID型
- 通过增减或切换数字ID号访问未授权资源
- 示例:
/api/userinfo?id=123→/api/userinfo?id=124
2. 编码/哈希ID型
- 应用程序使用编码或哈希处理过的ID号
- 可能通过解码或分析生成模式来预测其他ID
3. 间接引用型
- 通过一个接口获取另一个接口所需的ID
- 示例模式:
- 通过
/api_v1/messages?user_id=ANOTHER_USERS_ID获取会话ID列表 - 使用获取的会话ID访问
/api_v1/messages?conversation_id=SOME_RANDOM_ID
- 通过
4. 无显式ID要求型
- 应用程序在请求中不显式要求ID参数
- 尝试添加ID参数可能暴露漏洞
三、高级IDOR挖掘技术
1. 编码/哈希ID分析技术
- 解码尝试:对编码ID尝试base64、URL编码等常见解码方式
- 生成模式分析:
- 注册多个账户分析ID生成规律
- 检查ID是否使用低熵算法生成(可预测)
- 信息泄露途径:
- 公开页面(用户资料等)
- Referer头信息
- 其他API接口响应
2. ID创建影响技术
- 当ID不可预测时,关注:
- 资源创建过程中ID的生成方式
- 资源间的关联关系建立机制
- 尝试通过创建操作影响ID分配
3. 参数注入技术
-
添加未请求的ID参数:
- 原始请求:
GET /api_v1/messages - 测试请求:
GET /api_v1/messages?user_id=ANOTHER_USERS_ID
- 原始请求:
-
HTTP参数污染(HPP):
- 测试方法:
GET /api_v1/messages?user_id=VALID_ID&user_id=OTHER_ID - 变体:
- 参数顺序变化
- 数组形式参数:
user_ids[]=ID1&user_ids[]=ID2
- 测试方法:
4. 盲IDOR技术
- 特征:接口不直接返回请求信息,但会导致:
- 文件导出内容变化
- 邮件或通知信息泄露
- 其他间接信息泄露渠道
5. 请求方法变换
- 尝试不同HTTP方法:
- GET ↔ POST ↔ PUT ↔ DELETE ↔ PATCH
- 特别关注:
- PUT和POST互换
- 方法覆盖(如X-HTTP-Method-Override头)
6. 文件类型变换
- 修改请求的文件类型:
- 添加
.json后缀:/api/userinfo → /api/userinfo.json - 修改Accept头
- 尝试不同内容类型(XML/JSON/CSV等)
- 添加
四、IDOR漏洞危害提升技术
1. 漏洞危害性评估
-
高危害IDOR:
- 密码重置/更改功能
- 账户恢复功能
- 敏感信息读写操作
-
低危害IDOR:
- 邮件订阅设置更改
- 非敏感信息访问
2. 与其他漏洞组合利用
-
存储型XSS组合:
- 发现可写型IDOR(如修改用户购物车)
- 结合self-XSS payload
- 通过IDOR将XSS传播给其他用户
- 形成无需交互的存储型XSS
-
信息泄露组合:
- 通过可读型IDOR获取敏感信息
- 结合其他漏洞提升攻击链
五、系统化IDOR测试流程
-
枚举所有对象引用点:
- 收集所有接受ID参数的端点
- 包括URL参数、POST数据、头部信息等
-
ID类型分析:
- 识别ID生成方式(顺序数字、UUID、哈希等)
- 对编码ID尝试解码
-
权限测试矩阵:
- 使用不同权限账户测试同一功能
- 横向越权(同权限用户间)
- 纵向越权(不同权限等级间)
-
参数变异测试:
- 添加/删除/修改ID参数
- 参数污染测试
- 数组/非数组形式转换
-
请求变异测试:
- HTTP方法变换
- 内容类型变换
- 参数位置变化(URL/POST/Header)
-
间接引用测试:
- 通过其他接口获取目标ID
- 测试ID引用链安全性
六、防御建议
-
访问控制:
- 每个请求都进行权限验证
- 遵循最小权限原则
-
不可预测标识符:
- 使用高熵随机标识符(如UUIDv4)
- 避免使用顺序ID
-
间接引用映射:
- 使用临时令牌替代直接对象引用
- 维护用户-资源映射表
-
日志与监控:
- 记录敏感操作
- 监控异常访问模式
-
自动化测试:
- 包含越权测试的自动化安全测试
- 定期权限控制审计