vulns.co
/
GKData.io MCP

IDOR and broken authorization

Two accounts is the test. Replay object IDs, hidden verbs, batch exports, and GraphQL node(id) as the other user. One account is guessing.

Skill: Access control and tenant boundaries

Ask: Can account A read or change an object that belongs to account B, including a job, export, or leftover endpoint?

Stop: One object you own is denied to the other account, and one object you should not own is not returned.

Open the skill

Practice the class in the browser: PortSwigger Web Security Academy. The lab is theirs. This page is the stop condition and the disclosures.

Checklists

Disclosures

Playbooks

Tools

  • Burp Suite - The industry-standard intercepting proxy for manual web testing. Community edition is free; Pro adds the active scanner and automation.
  • Caido - A modern, lightweight web proxy and pentest toolkit - a fast alternative to Burp with a clean workflow and scriptable automation.

Payloads

  • IDOR / object-ID canaries - Two-account object identifiers and verb swaps. Use records you created. The payload is the ID, not a dump.

Bypasses

Questions

What if IDs are UUIDs?

UUIDs are still IDORs if you can obtain them from exports, websockets, search, or another object graph. Sequential is easier, not required.

GET is locked. Am I done?

Try PUT, PATCH, DELETE, and batch on the same object. Function-level authorization (BFLA) is the usual miss.

This page is the linked pack hunt_brief("idor") returns on the MCP connector. Authorized testing only.