IDOR (Insecure Direct Object Reference)
Reading time: 5 minutes
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking'i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.
IDOR (Insecure Direct Object Reference) / Broken Object Level Authorization (BOLA), bir web veya API endpoint'inin, kullanıcı tarafından kontrol edilebilen ve bir iç nesneye doğrudan erişmek için kullanılan bir tanımlayıcıyı ifşa ettiği veya kabul ettiği ve çağıranın bu nesneye erişmeye/değiştirmeye yetkili olup olmadığını doğrulamadığı durumlarda ortaya çıkar. Başarılı istismar genellikle diğer kullanıcıların verilerini okuma veya değiştirme gibi yatay veya dikey yetki yükseltmeye izin verir ve en kötü durumda tam hesap ele geçirme veya toplu veri sızdırma ile sonuçlanabilir.
1. Potansiyel IDOR'ları Belirleme
- Bir nesneyi referans eden parametrelere bakın:
- 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
- Veriyi okuyan veya güncelleyen endpoint'leri tercih edin (
GET
,PUT
,PATCH
,DELETE
). - Tanımlayıcıların sıralı veya öngörülebilir olup olmadığına dikkat edin – eğer ID'niz
64185742
ise muhtemelen64185741
de vardır. - Ek API'leri ortaya çıkarabilecek gizli veya alternatif akışları (ör. giriş sayfalarındaki "Paradox team members" linki) keşfedin.
- Düşük yetkili bir authenticated oturum kullanın ve sadece ID'yi değiştirin, aynı token/cookie'yi koruyun. Yetkilendirme hatasının olmaması genellikle IDOR işaretidir.
Hızlı manuel manipülasyon (Burp Repeater)
PUT /api/lead/cem-xhr HTTP/1.1
Host: www.example.com
Cookie: auth=eyJhbGciOiJIUzI1NiJ9...
Content-Type: application/json
{"lead_id":64185741}
Otomatik enumeration (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
Error-response oracle for user/file enumeration
Bir download endpoint hem username hem de filename kabul ettiğinde (ör. /view.php?username=<u>&file=<f>
), hata mesajlarındaki ince farklılıklar sıklıkla bir oracle oluşturur:
- Var olmayan username → "User not found"
- Bozuk filename ancak geçerli extension → "File does not exist" (bazen mevcut dosyaları da listeler)
- Geçersiz extension → validation error
Herhangi bir authenticated session ile, zararsız bir filename sabit tutarak username parametresini fuzz edebilir ve "user not found" string'ine göre filtreleyerek geçerli kullanıcıları keşfedebilirsiniz:
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'
Once valid usernames are identified, request specific files directly (e.g., /view.php?username=amanda&file=privacy.odt
). Bu desen genellikle diğer kullanıcıların belgelerinin yetkisiz ifşasına ve credential leakage ile sonuçlanır.
2. Gerçek Dünya Vaka İncelemesi – McHire Chatbot Platform (2025)
Paradox.ai destekli McHire işe alım portalının değerlendirmesi sırasında aşağıdaki IDOR keşfedildi:
- Uç nokta:
PUT /api/lead/cem-xhr
- Yetkilendirme: herhangi bir restoran test hesabı için user session cookie
- Gövde parametresi:
{"lead_id": N}
– 8 haneli, ardışık sayısal tanımlayıcı
lead_id değerini düşürerek test eden kişi, rastgele başvuranların full PII (name, e-mail, phone, address, shift preferences) ve oturum kaçırılmasına izin veren bir consumer JWT elde etti. 1 – 64,185,742
aralığının numaralandırılması yaklaşık 64 milyon kaydı açığa çıkardı.
Proof-of-Concept request:
curl -X PUT 'https://www.mchire.com/api/lead/cem-xhr' \
-H 'Content-Type: application/json' \
-d '{"lead_id":64185741}'
Test hesabına erişim sağlayan varsayılan admin kimlik bilgileri (123456:123456
) ile birleştiğinde, zafiyet kritik, şirket geneli bir veri ihlaline yol açtı.
3. IDOR / BOLA Etkisi
- Yatay yükseltme – diğer kullanıcıların verilerini okuma/güncelleme/silme.
- Dikey yükseltme – düşük ayrıcalıklı bir kullanıcı sadece admin'e ait işlevlere erişim kazanır.
- Kimlikler ardışık ise kitlesel veri ihlali (örn., başvuru ID'leri, faturalar).
- Token çalarak veya diğer kullanıcıların şifrelerini sıfırlayarak hesap devralma.
4. Önlemler ve En İyi Uygulamalar
- Her istekte nesne-düzeyinde yetkilendirme uygulayın (
user_id == session.user
). - Otomatik artan ID'ler yerine dolaylı, tahmin edilemez tanımlayıcıları (UUIDv4, ULID) tercih edin.
- Yetkilendirmeyi sunucu tarafında gerçekleştirin; gizli form alanlarına veya UI kontrollerine asla güvenmeyin.
- RBAC / ABAC kontrollerini merkezi bir ara katmanda uygulayın.
- ID'lerin taranmasını tespit etmek için rate-limiting & logging ekleyin.
- Her yeni endpoint'i güvenlik testine tabi tutun (unit, integration ve DAST).
5. Araçlar
- BurpSuite uzantıları: Authorize, Auto Repeater, Turbo Intruder.
- OWASP ZAP: Auth Matrix, Forced Browse.
- Github projeleri:
bwapp-idor-scanner
,Blindy
(toplu IDOR avlama).
Kaynaklar
- 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
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking'i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.