skills/idor/SKILL.md
Use when testing Insecure Direct Object Reference, IDOR, broken object-level authorization, cross-account access, tenant isolation, user ID tampering, or resource ownership checks.
npx skillsauth add ghostonbutterbread/bug-bounty-harness idorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Test for Insecure Direct Object Reference vulnerabilities.
For broader broken access control work, start with /access-control. Use /idor when the observed surface is specifically object-level authorization, BOLA, cross-account object access, tenant/object ID swapping, or hidden object handles.
Read shared state in this order before testing:
/account-management registry at $HARNESS_SHARED_BASE/{program}/credentials/account_inventory.jsonnotes/summary.mdnotes/observations.mdchecklist.md (IDOR items only)todo.md (IDOR items only)Use the registry to identify owned account aliases, user IDs, PwnFox colors, resource IDs, owner relationships, and destructible/cleanup status before swapping any object identifier.
Use agents/bypass_harness.py in --type idor mode for first-pass ID swapping and header-trick coverage. Expand manually for multi-step workflows, write actions, and role-bound objects once you identify a promising reference.
python agents/bypass_harness.py --target https://target.com/api/v1/orders/123 \
--type idor --program target --concurrency 5 --rps 2
| Mode | Use When | What It Tests |
|------|----------|---------------|
| horizontal-read | One user can see another user's object | Read access control on object fetches |
| horizontal-write | Mutable resources exist | Update or delete authorization on peer objects |
| vertical | Admin or privileged resources are exposed via IDs | Role boundary enforcement |
| workflow | IDs appear across multi-step flows | Ownership checks at each transition |
# Path-based ID swapping
python agents/bypass_harness.py --target https://target.com/api/v1/orders/123 \
--type idor --program target --concurrency 5 --rps 2
# Query-parameter ID swapping
python agents/bypass_harness.py --target https://target.com/api/v1/order?id=123 \
--type idor --program target --concurrency 5 --rps 2
agents/bypass_harness.py| Option | Description |
|--------|-------------|
| --target, -t | Target URL (required) |
| --type, -T | Use idor |
| --program | Program name for shared storage |
| --output-dir, -o | Override raw artifact directory |
| --timeout | Request timeout in seconds |
| --concurrency, -c | Max parallel requests |
| --rps | Requests per second |
| --verbose, -v | Verbose debug output |
| --quiet, -q | Show hits only |
$HARNESS_ROOT/prompts/idor-playbook.md$HARNESS_SHARED_BASE/{program}/agent_shared/$HARNESS_SHARED_BASE/{program}/agent_shared/findings/idor/findings.md$HARNESS_SHARED_BASE/{program}/agent_shared/findings/bypass/prompts/access-control-context-pack.md if the request is broader than direct object references.prompts/idor-playbook.md.agents/bypass_harness.py in --type idor mode for first-pass coverage./account-management owned records.agent_shared/findings/idor/findings.md./account-management.checklist.md, todo.md, and relevant notes.testing
Systematic live request mutation: flip booleans, field ops, headers, content-type, parser differentials, replay vs intercept, null/empty testing. Inherits live-testing-policy scope/rate/ownership rules.
development
Test password reset, forgot-password, reset-token, email reset, and account recovery flows for account takeover risks.
tools
Targeted param/field discovery using tech stack clues, naming conventions, and controlled-rate ffuf — then feeds findings into request-exploration for mutation. Not brute-force; informed and scoped.
testing
Ghost-only workflow for creating approved bug bounty test accounts and saving credential references.