用途
hunt-idor 是一个面向安全测试人员的 IDOR(不安全的直接对象引用,Insecure Direct Object Reference)漏洞挖掘技能,来源于 elementalsouls/claude-bughunter 项目,由 26 份公开漏洞赏金报告构建而成。其目标是帮助测试者在获得授权的目标上系统性地发现、验证并记录 IDOR 漏洞。
主要能力
攻击面识别
资料列出了可用于定位 IDOR 的信号:
- URL 模式:如 /api/v1/users/{id}/、/api/v*/orders/{order_id}、/invoices/download?id=、/reports/{uuid}/、/messages/{thread_id}、/admin/orgs/{org_id}/members、/graphql(带 ID 的查询参数)等。
- 响应头信号:如接受原始 ID 的端点返回 Content-Type: application/json;缺少 X-Frame-Options 或存在 CORS 错误配置;用户级 Bearer token 访问组织级资源。
- JavaScript 源码特征:如拼接或插值的 ID(fetch(
/api/v1/users/${userId}/profile)、axios.get('/invoices/' + invoiceId))、GraphQL 查询中的 ID、状态管理暴露的外部 ID。 - 技术栈信号:GraphQL 端点、使用连续整数 ID 的 REST API、可预测或泄漏的 UUID、多租户 SaaS、移动端 API。
挖掘方法论
- 以用户 A 身份浏览全部功能,在 Burp Suite 中抓取请求,过滤含 id=、_id=、uuid=、/{noun}/{id} 等参数的请求。
- 判定 ID 类型:连续整数可枚举 ±1、±100;UUID 检查是否在其他响应或 JS 中出现;哈希 ID 检查是否在公开端点、元数据或 GraphQL introspection 中泄漏。
- 建立两个同权限账户(A 为资源所有者,B 为攻击者),记录 A 的 ID,用 B 的凭据重放,并测试所有 HTTP 动词(GET、POST、PUT、PATCH、DELETE)。
- 测试跨租户、跨组织场景,重点覆盖 admin/管理端点。
- GraphQL 专项:运行 introspection,替换查询/变更中的 ID,测试读与写/删除。
- 测试写/破坏性操作(删除、修改、添加自己)并串联多个 IDOR。
- 测试状态变更边界情况:过期 token/邀请、竞态条件、间接引用(?sort=id、?filter[user_id]=)。
- 记录差分:确认 B 无合法访问权,截图 200 OK 与预期 403/404 的对比。
检测与载荷示例
资料提供了 curl(交换 cookie/token)、GraphQL IDOR 测试、ffuf 枚举连续 ID、生成连续 ID 字典、Burp Intruder 载荷、JavaScript 抓取泄漏 ID、源码 grep 授权缺失、HTTP 方法篡改等命令示例。
常见根因
包括 ORM 查询缺少归属检查、授权在路由层而非对象层、信任请求体中的客户端 ID、GraphQL resolver 缺少字段级授权、不同 HTTP 动词授权不一致、通过关联对象暴露间接引用、竞态与状态型 IDOR、多租户隔离失败等。
绕过技术
资料针对 UUID、间接/哈希引用、短期 token、枚举速率限制、WHERE 子句 user_id 检查、CORS 限制、不透明引用、WAF 参数过滤等防御,分别给出了绕过思路。
验证门槛
提交报告前需回答三点:攻击者当前能做什么(需具体)、受害者损失什么(对应 CIA 三要素)、能否在 10 分钟内从零复现(两个新账户、精确请求、200 OK 响应、不依赖既有状态或时序)。无法可复现演示则不应提交。
进阶利用链
资料整理了六类高价值组合链,例如:邮件修改端点 IDOR + 缺少重新认证 → 密码重置 → 账户接管;文件下载 IDOR + 文件名控制的 Content-Disposition → 反射型 XSS → 会话窃取;GraphQL node(id:) 全局 ID + Relay 关系遍历 → 跨租户批量数据提取;团队成员端点 IDOR + 请求体大规模赋值 → 受害者团队上的角色提升。每一项均配有真实案例参考。
适用场景
适用于具备用户资源隔离的应用安全审计,如多租户 SaaS、B2B 工具、金融科技与支付处理、含私有内容的社交平台、具备组织/仓库隔离的开发者工具,以及移动端 API。
限制
资料未提供明确的收费、价格或平台支持信息。该技能用于授权的安全测试;资料中的命令与载荷需在合法授权范围内使用。部分真实案例(如 Uber、GitHub、Reddit、Shopify、Stripe 等)为风格化示例,具体披露编号与赏金信息以资料所载为准。