IDOR
Detection
?uid=1 or ?filename=file_1.pdf
?filename=ZmlsZV8xMjMucGRm base64 for file_123.pdf
download.php?filename=c81e728d9d4c2f636f067f89cc14862c
=> MD5 - See Cracking - Hashes to identify hash types

IDOR is NOT ONLY on id
If the server’s response includes sensitive identifiers like id, email, or phone_number in a structured format (e.g., JSON), these could be potential entry points for exploitation.

Double ID
Victim's ID: 5200
Attacker's ID: 5233
Wildcard
Nuclei Template
Credit: @coffinxp7
https://raw.githubusercontent.com/coffinxp/priv8-Nuclei/refs/heads/main/idor-scan.yaml
Bypass 403
Bypass 403 / 401Try plural form: users/* instead of user/*
UUID
Unpredictable UUID
Extract from Waybackmachine, virustotal, URLScan, etc.
Extract UUIDs from waybackurls
script.py
UUID Version 1
Insecure UUIDChange the UUID value type
When testing the API field with UUID type, try to change the UUID value type to ID or even an Email
Source: https://x.com/therceman/status/1929620937772560750
Mass IDOR Enumeration
Predictable name => fuzz
documents.php?uid=1 => fuzz uid to discover new docs
Mass Enumeration
Automation - GET request
Automation - POST request
Bypassing Encoded References

not match...
Function Disclosure
javascript:downloadContract('1')
match
Tip: We are using the -n flag with echo, and the -w 0 flag with base64, to avoid adding newlines, in order to be able to calculate the md5 hash of the same value, without hashing newlines, as that would change the final md5 hash.
Mass Enumeration
IDOR in Insecure APIs
PUT /profile/api.php/profile/1
Try to change uid or role
Try HTTP verbs
Information Disclosure
Change id

Modifying Other Users' Details
Use id 2 and uuid diclosed to change user info via PUT request
One type of attack is modifying a user's email address and then requesting a password reset link, which will be sent to the email address we specified, thus allowing us to take control over their account. Another potential attack is placing an XSS payload in the 'about' field
Role in URL
Parameter pollution

Depreciated API versions

JSON globbing

APIs that use static keywords

Second-order IDOR

Account Takeover
500 is an attacker ID and 501 is a victim ID, so we change the userid from attacker to victim ID
Tools
Interesting Books
Interesting BooksThe Web Application Hacker’s Handbook The go-to manual for web app pentesters. Covers XSS, SQLi, logic flaws, and more
Bug Bounty Bootcamp: The Guide to Finding and Reporting Web Vulnerabilities Learn how to perform reconnaissance on a target, how to identify vulnerabilities, and how to exploit them
Real-World Bug Hunting: A Field Guide to Web Hacking Learn about the most common types of bugs like cross-site scripting, insecure direct object references, and server-side request forgery.
Resources
Last updated