Insecure Direct Object References (IDOR) Zafiyeti

Insecure Direct Object References (IDOR) zafiyeti bir saldırganın hedef web uygulamasında yetkisiz erişim elde etmesine ve eylemler gerçekleştirmesine olanak tanıyan bir web uygulama zafiyetidir. Sunucu nesnelere (belgeler, dosyalar, veriler vb.) erişmek için gelen HTTP isteklerini doğrulayamadığında IDOR zafiyeti oluşur.

Web uygulaması, bir nesneye erişmeye çalışan kullanıcının gerçekten o kişi olup olmadığını belirleyemediğinde, saldırganlara alttaki nesne ayrıntılarını ifşa eder. Saldırganlar böylece nesneye yetkisiz erişim elde eder ve kötü niyetli eylemler gerçekleştirmek için nesnenin ID parametresinin değerini değiştirir.

IDOR Zafiyeti Etkileri

  • P1 seviyesinde hesap devralma, çok kritik bilgilere erişim.
  • P2 seviyesinde başka bir kullanıcının verilerini değiştirme/silme, özel/kamuya açık önemli verilere erişim. (Bilet, fatura, ödeme bilgileri vb.)
  • P3 seviyesinde özel verilere erişim/ silme/ değiştirme (Adres, isim vb.)
  • P4 seviyesinde önemsiz verilere erişim.

Örnek Senaryo:

Bir banka uygulaması düşünelim. Bankaya kayıt olduk. Hesabımız açıldı ve internet bankacılığı için bize bir ID değeri verildi.

https://testbank.com/dashboard/user?id=1234 (Bu ID değeri saldırganımızın ID değeri olsun.)

https://testbank.com/dashboard/user?id=1235 (Bu ID değeri ise kurbanımızın ID değeri olsun.)

Eğer saldırgan URL’de bulunan kendi ID değerini değiştirip, kurbanın ID değerini yazdıktan sonra kurbanın bilgilerine erişebilirse IDOR zafiyetinden yararlanmış olur.

Örnek bir IDOR Makinesi Çözümü:

Dilerseniz IDOR zafiyetini PortSwigger’ın oluşturduğu IDOR makinesi ile pekiştirelim.

Uygulamaya girdiğimizde ilk dikkat çeken işlev live chat bölümü. Bu bölüme girip rastgele bir şeyler yazdıktan sonra “view transcript” butonuna tıkladık. Böylece müşteri temsilcisi ile konuşmamızın bir kopyasını elde etmiş olduk.

Bu .txt dosyası, sunucuda 2 ID değeri ile saklanan, bizim müşteri temsilcisi ile olan konuşmamızdı. Bu değerin neden 1 olmadığını anlamak için Burp Suite aracından indirme isteğini kontrol edelim.

Bu isteği Repeater’a gönderip 2 olan ID değerini 1 olarak değiştirdik. Bu isteği sunucuya gönderdiğimizde diğer kullanıcının şifresini görebildik ve IDOR zafiyetinden faydalanmış olduk.

IDOR Zafiyeti Nasıl Önlenir?

  • Geliştiriciler, anahtarlar veya dosya adları gibi özel nesne referanslarını görüntülemekten kaçınmalıdır.
  • Parametrelerin doğrulanması düzgün bir şekilde uygulanmalıdır.
  • Başvurulan tüm nesnelerin doğrulanması yapılmalıdır.
  • Belirteçler, yalnızca kullanıcıyla eşleştirilecek ve herkese açık olmayacak şekilde oluşturulmalıdır.

Yazar: Göktuğ Kaya

Referanslar