IDOR (Insecure Direct Object Reference) Nedir?

IDOR (Insecure Direct Object Reference)  Nedir?

 

IDOR (INSECURE DİRECT OBJECT REFERENCE) ZAFİYETİ NEDİR:

 

IDOR zafiyeti, web uygulaması üzerindeki kullanıcılar üzerinden yatay veya dikey hiyerarşi yetkileri dışına çıkarak diğer kullanıcı bilgileri üzerinde okuma, değiştirme, silme, kritik verilere(belgeler,dosyalar) ulaşma gibi durumlara sebebiyet verebilir.

 

DİKEY ERİŞİM KONTROLÜ:

 

Kullanıcı rollerine göre erişimi kısıtlamayı amaçlar. Örneğin bir kullanıcı sadece kendi bilgilerine erişimi varken, bir modaretörün birden fazla kullanıcı bilgilerine erişimi vardır ki sadece bununla kalmaz.

 

 

 

YATAY ERİŞİM KONTROLÜ:

 

Aynı hiyerarşik düzeyde bulunan kullanıcıların verilere erişimini kısıtlamayı amaçlar. örnek olarak bir kullanıcı kendi adresini görebilirken, başka bir kullanıcının adres bilgilerini görüntülenmesine izin vermez.

 

Örnek senaryo:

 

Bir e-ticaret sitesi düşünelim. Ve elimizde iki kullanıcı olsun; kullanıcı-A ve kullanıcı-B.(kullanıcı-A idsi = 14, kullanıcı-B idsi= 18) 

Kullanıcı-A bir sipariş versin. Ve adres bilgilerinin databaseden  “user_id” verisi ile alındığını varsayalım. 

Sipariş sırasında user_id = 14 iken 18 yaparsam kullanıcı-B nin adres bilgilerini siparişe ekleneceği beklerim tabi IDOR varsa.

  

Daha iyi anlaşılması için portswinggerın IDOR labına bakalım.

Live chat opsiyonuna baktığımıda Hal adında birisi ile konuşabiliyoruz. View transcript seçeneği ise yaptığımız konuşmaları download etmemize olanak sağlıyor. Bu isteği burp suite ile yakalıyoruz.

Bakıyoruz ki view transcript bir get komutu çalıştırıp “4.txt” adında bir dosyayı indiriyor. Yani “1/2/3.txt” gibi dosyalar olarabilir.  “4.txt” yerine  “1/2/3.txt” gibi dosyaları deneyelim. 

“1.txt” denediğimizde indirdi ve başka bir kullanıcının mesaj içeriğine ulaştık. Ve başka bir kullanıcının şifre bilgisini öğrendik. 

User name : carlos

Password : 1gi9*******

 

‘User name’ bilgisi laba giriş yaparken veriliyor.

 

Başarılı bir şekilde hesabı ele geçerdik ve labı tamamladık.

Portswinggerın bu labında önemli olan kısım, http isteğindeki 'x.txt' kalbının farklı veryasyonlar ile test edilebileceğini anlamaktır.

 

IDOR ZAFİYETİNİ ÖNLEMEK İÇİN NE YAPILABİLİR:

Öncelikle IDOR kendi başına doğrudan güvenlik açığı yaratmaz, çünkü sadece bazı nesneler tanımlamak için kullanılan biçim veya kalıp üzerinde oyunlar oynanır. Ve saldırgan bu biçim veya kalıbı kullanarak uygulamayı test eder.

Örnek olarak kullanıcı bilgilerini döndürmek için kullanılan biçimin yada kalıbın aşağıdaki gibi olduğunu hayal edin;

S-00000

S-00001

S-00002

Bu kalıba dayanarak, saldırganın S-00000 den S-99999’a kadar geçerli kimliklerden oluşan bir ‘test’ koleksiyonuna sahiptir.

IDOR’u istismar etmek için ‘Erişim Denetimi’ sorunu olması gerekir. Yani IDOR zafiyetinin oluşmasının sebebi erişim kontrolüdür.

IDOR güvenlik açıklarını önlemenin en iyi yolu, kullanıcının istenen nesneye erişme ve/veya onu değiştirme yetkisi olup olmadığını görmek için her işlevsellik üzerinde katı erişim denetimi kontrolleri uygulamaktır.