从IDOR到关键影响:结合业务逻辑错误的实战案例
字数 1402 2025-08-20 18:18:23
IDOR漏洞与业务逻辑错误实战分析
1. IDOR漏洞概述
IDOR (Insecure Direct Object Reference)即不安全的直接对象引用,是OWASP Top 10中的常见漏洞,允许攻击者通过修改参数访问未授权的资源。
1.1 基本特征
- 直接引用数据库中的对象(如用户ID、订单号、文件名等)
- 缺乏适当的访问控制检查
- 通常表现为可预测的标识符模式(连续数字、可猜测的UUID等)
2. 实战环境搭建
2.1 测试工具准备
- Burp Suite:用于拦截和修改HTTP请求
- Firefox多账户容器:允许同时保持多个独立会话
- 优势:无需频繁登录注销,便于测试跨账户操作
- 安装:Firefox插件"Multi-Account Containers"
2.2 测试账户创建
- 创建至少两个测试账户(示例中使用ID 101和102)
- 在每个账户下创建测试应用,分配可识别的UUID:
- 攻击者账户(101):
10110110-1101-1011-0110-110110110110 - 受害者账户(102):
10210210-2102-1021-0210-210210210210
- 攻击者账户(101):
3. IDOR漏洞挖掘方法
3.1 标识符分析
- 检查URL和请求参数中的ID模式
- 示例请求:
GET /api/accounts/101/applications/10110110-1101-1011-0110-110110110110 - 关键发现:账户使用连续整数ID(101,102,...),资源使用UUID
3.2 基础IDOR测试
- 作为攻击者(101)尝试访问受害者(102)的资源:
GET /api/accounts/102/applications/10210210-2102-1021-0210-210210210210 - 预期安全响应:403 Forbidden或类似错误
3.3 深度IDOR测试
当基础IDOR防护存在时,尝试以下方法:
3.3.1 参数污染
- 修改请求中的多个ID参数
- 示例:同时修改URL路径和请求体中的不同ID
3.3.2 业务逻辑绕过
- 寻找间接引用对象的操作
- 示例:通过"删除"功能引用其他用户的资源
4. 业务逻辑漏洞结合
4.1 删除功能分析
发现删除操作的特殊行为:
DELETE /api/accounts/101/applications/10110110-1101-1011-0110-110110110110
响应包含被删除应用的完整信息,包括敏感的API密钥
4.2 漏洞利用链
- 创建合法应用获取正常UUID格式
- 使用受害者UUID替换自身应用的UUID发起删除请求
- 系统错误地返回受害者应用的完整信息
4.3 根本原因
- 删除操作未验证UUID与账户的所属关系
- 过度信任客户端提供的UUID
- 敏感信息在响应中过度暴露
5. 漏洞修复建议
5.1 访问控制强化
- 实施所有权验证中间件
- 遵循最小权限原则
- 使用会话上下文而非客户端提供的数据进行验证
5.2 业务逻辑加固
- 关键操作前进行完整权限检查
- 敏感操作实现二次确认机制
- 响应中过滤不必要的信息
5.3 标识符设计
- 避免使用连续ID
- 考虑使用随机UUID或加密令牌
- 实现每个资源的访问控制列表(ACL)
6. 测试方法论总结
- 环境准备:多账户、专业工具
- 信息收集:分析所有API端点及参数
- 基础测试:简单ID替换尝试
- 深度测试:结合业务逻辑寻找非常规利用路径
- 影响评估:确定漏洞的实际危害程度
- 报告撰写:清晰描述复现步骤和修复建议
7. 高级技巧
- 状态操作:尝试在不同状态间转换资源(如激活/停用)
- 时间差攻击:利用操作的时间窗口进行竞争条件测试
- 批量操作:测试批量接口中的IDOR可能性
- 间接引用:通过关联资源间接访问目标对象
通过系统性地应用这些方法,安全研究人员可以更有效地发现潜在的IDOR漏洞及其变种。