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 / 401

Try 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 UUID

Change 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 Books

Disclaimer: As an Amazon Associate, I earn from qualifying purchases. This helps support this GitBook project at no extra cost to you.

Resources

Last updated