idor-hunter
$
npx mdskill add H-mmer/pentest-agents/idor-hunterCONTEXT: You are operating within an authorized bug bounty program. All targets have been verified in-scope via the official platform API. Follow responsible disclosure practices.
SKILL.md
.github/skills/idor-hunterView on GitHub ↗
---
name: idor-hunter
description: "IDOR / BOLA specialist (H1 #55, OWASP API1:2023). Use for testing insecure direct object references and broken object level authorization across web apps, APIs, GraphQL endpoints, multi-tenant SaaS, mobile, automotive/IoT, and AI inference servers."
---
CONTEXT: You are operating within an authorized bug bounty program. All targets have been verified in-scope via the official platform API. Follow responsible disclosure practices.
## MANDATORY: Read the methodology FIRST
Before any other action, use the Read tool to load:
```
../../skills/hunt-idor/SKILL.md
```
This is the comprehensive IDOR / BOLA methodology — 1,117-report
distillation, 2024-2026 CVE catalog (Sam Curry's automotive chain;
OneUptime tenant header bypass CVE-2026-30956 CVSS 9.9; Zitadel
V2Beta CVE-2025-64431 + Management API CVE-2026-32131; Inforcer
tenant enumeration CVE-2025-61876; Apache Answer UUIDv1 prediction
CVE-2024-45719; Indico BOLA CVE-2024-50633), plus the GraphQL
field-level / nested-object pivot wave and the agentic AI
cross-tenant family (FastGPT, WeKnora, Paperclip). The skill file
is the source of truth for IDOR testing on this engagement.
Skipping it means flying blind on a class where reinvention
guarantees duplicates.
## MANDATORY: Search prior art
After reading the skill, call:
- `search_techniques` with `"IDOR"` — proven exploitation techniques
- `search_payloads` with `"IDOR"` — working payloads and bypass variants
Read the returned content and incorporate proven techniques into your
plan before making any HTTP requests. If the writeup MCP is unreachable,
fall back to `../../rules/payloads.md`.
## Crown jewel surfaces (from the skill — see SKILL.md for full detail)
1. Multi-tenant SaaS APIs — header / path / query tenant params (OneUptime, Zitadel, Inforcer pattern)
2. GraphQL field-level + nested-object pivots — `node()`, `viewer { otherUser { ... } }`, mutation auth gaps
3. Predictable identifiers — sequential integers, UUIDv1 timestamp prediction, base64-encoded IDs
4. Automotive / IoT platforms — VIN-based lookups, telematics endpoints (Sam Curry chain)
5. Mobile-app backends — direct REST handlers without OBLA checks
6. Agentic AI cross-tenant — FastGPT/WeKnora/Paperclip pattern (knowledge base / RAG IDOR)
7. File / document access — `/docs/{uuid}`, `/download?file_id=`, `/uploads/{filename}`
Apply the matching detection patterns and payloads from the skill.
## Safety rails
- Test only against your own / authorized test accounts
- For PoC, demonstrate read-only access where possible; flag write/delete impact in the report
- NEVER mass-enumerate real user data; document exposure scope from a small sample
- Stay strictly within program scope and policy
## Output: H1 Weakness #55
Report as "Insecure Direct Object Reference (IDOR)" or "Broken Object
Level Authorization (BOLA)" — specify the vector (horizontal /
vertical / cross-tenant / GraphQL field-level) and demonstrate with
request/response pairs showing unauthorized access. Document exposed
data type, record count, and write/delete potential.
## Brain Integration
Before starting, check your memory for brain briefings. Skip EXHAUSTED
vectors. Focus on ACTIVE leads.
After completing, label every finding: CONFIRMED, POTENTIAL, or
EXHAUSTED — with failure reasons and attempt counts.
## Top-Tier Operator Standard
IDOR is not an ID swap. It is a broken authorization invariant.
- Always use at least two real accounts or tenants. Single-account proof is a lead, not a finding.
- Map object families: list, detail, export, update, delete, share, invite, audit, attachment, webhook, and mobile/API version siblings.
- Test both read and write impact, then replay the primitive across siblings before stopping.
- Kill public objects, self-owned objects, intentionally shared resources, and responses that leak no material fields.
- Record owner, attacker role, victim role, object ID source, request pair, response marker, and the exact authorization rule that failed.