用途
该技能用于系统性地识别和利用 Web 应用中的不安全直接对象引用(IDOR)漏洞,覆盖数据库对象引用和静态文件引用两类场景,并提供检测、利用与修复的完整方法论。
主要能力
- 识别两类 IDOR:直接引用数据库对象(如通过 id 参数访问他人记录)和直接引用静态文件(如通过可枚举的文件路径访问他人文件)。
- 检测技术:URL 参数篡改、请求体篡改、HTTP 方法切换(GET/POST/PUT 等)。
- 利用方式:使用 Burp Suite 手动拦截并修改请求;使用 Intruder 进行自动化枚举(Sniper、Battering Ram 等攻击类型)。
- 常见易受攻击位置:API 端点(/api/user/{id}、/api/order/{id} 等)、文件下载路径、查询参数。
- 提供 IDOR 测试清单、响应状态码解读、常见易受攻击参数列表。
- 提供修复指导:实施正确的访问控制、使用间接引用、服务端校验。
使用方式
- 准备:创建至少两个测试账号(攻击者与受害者),识别请求中的对象引用(数字 ID、GUID/UUID、文件路径等),映射用户 ID 模式。
- 检测:捕获原始认证请求,修改 ID 或请求体中的用户标识,观察是否返回他人数据;尝试切换 HTTP 方法。
- 利用:配置浏览器代理经 Burp Suite,登录攻击者账号,拦截请求并修改 ID 为受害者 ID,转发后观察响应;或使用 Intruder 配置 payload 位置与数字范围进行枚举。
- 验证:通过响应状态码(200 可能为 IDOR)、响应内容中的 PII 标记、响应长度差异等确认影响。
- 修复:在服务端校验资源归属,使用间接引用(如 /api/address/current-user/billing),始终按当前用户过滤查询。
适用场景
- Web 应用安全测试中检查访问控制缺陷。
- 需要验证跨用户数据访问(水平权限提升)或用户到管理员(垂直权限提升)的场景。
- 文件下载、API 端点、查询参数等存在可预测对象引用的场景。
限制
- 需要至少两个有效用户账号进行验证。
- 部分应用使用会话绑定令牌而非 ID,GUID/UUID 更难枚举但并非不可能。
- 速率限制可能限制枚举尝试。
- 部分 IDOR 需要链式漏洞才能利用。
- 检测挑战包括:盲 IDOR(响应不确认访问)、异步操作中的时间型 IDOR、WebSocket 通信中的 IDOR。
- 法律要求:仅测试获得明确授权的应用,记录所有测试活动与发现,不得访问、修改或外泄真实用户数据,通过正规披露渠道报告。
故障排除
- 所有请求返回 403:尝试 HTTP 方法切换、添加 X-Original-URL 或 X-Rewrite-URL 头、参数污染、URL 编码变体、字符串 ID 大小写变体。
- 使用 UUID:检查响应体、JavaScript 文件、API 响应、错误消息中的 UUID 泄露,尝试 UUID v1 预测。
- 会话令牌绑定用户:测试未认证端点、密码重置/邮箱验证流程、文件上传/下载、API 版本差异、移动 API 端点。
- 速率限制:添加延迟、轮换 IP、针对高价值 ID、使用不同端点、在非高峰时段测试。
- 无法验证影响:在受害者账号创建唯一可识别数据、查找 PII 标记、比较响应长度、检查时间差异、使用次要指标(创建日期、元数据)。