Blog

Insecure Direct Object References

IDOR

-Insecure Direct Object References-

Merhaba !

IDOR, kullanıcının erişim yetkisi bulunmadığı halde güvensiz olarak yaptığı nesne talebi sonucunda istediği nesneye doğrudan erişebildiği bir web uygulama zaafiyetidir.

Türkçeye güvensiz doğrudan nesne referansı olarakta aktarılabilir.

Bu zaafiyet web uygulamasındaki yetki kontrol mekanizmasının hatalı olması yada bu noktada tamamen savunmasız olduğu durumlarda karşımıza çıkmaktadır. Yetkilendirme derken bunu biraz daha detaylı açıklayacak olursak şöyle inceleyebiliriz.

Bir uygulama üzerinde oturum açma hakkı olan kullanıcılar arasında farklı yetkilendirme mekanizmaları ve prensibleri mevcuttur.

Birincisi sistemdeki kullanıcıların sahip olduğu rütbelere göre hak ve işlevselliklerinin ölçüsünün belirlenmesinde kullanılan yetkilendirme kontrolüdür. Bu kontrolde sisteme login olan kişilerin sitem üzerinde yapabilecekleri işlemler birbirinden farklıdır. Kişilerin sahip olduğu yetkiler kadar belirlenen alanlara erişmesine ve düzenlemesine izin verilemektedir. Bunları genel olarak her sistemde gördüğümüz Yönetici, Admin, Administratör, Moderatör, Editör ve nornal kullanıcı olarak birbirlerinden kesin çizgilerle ayrılan farklı yetki adlandırmalarıdır. Mesela editör yetkisine sahip olan bir kişi içerikleri düzenleyip, değiştirebilirken normal kullanıcı yetkisine sahip olan bir kişi yalnızca içerikleri görüntüleyebilmektedir.

Bu yetkilendirme sistemi dikey yetkilendirme olarakta adlandırılmaktadır.

İkincisi ise sistemde veya uygulama üzerinde eşit haklara sahip olan kullanıclar arasındaki erişimleri kısıtlandırmaya yönelik yapılan kontroldür. Bu yetkilendirme kontrolünde örneğin tüm normal kullanıcılar uygulamada yayınlanan içeriklere ve kendi kişisel bilgilerine erişebilirken, başka bir kullanıcıya ait kişisel bilgilere erişimezler. Bu yetkilendirme kontrolü yatay yetkilendirme kontrolü olarakta bilinmektedir.

Buna bir örnek vermek istersek e-ticaret sitelerinden yola çıkabiliriz. Şöyle ki; e-ticaret sitelerinde tüm kullanıcılar ürünleri rahatlıkla görüntüleyebilmektedir. Aynı zamanda alışveriş yaptıkları sırada kullandıkları kişisel bilgileride sistemde tutulmaktadır.(Adres, telefon numarası, e-posta bilgisi vs.) Bu sistemlerde bir kullanıcı başka bir kullanıcıya ait olan bilgileri görüntüleme veya düzenleme yetkisine sahip değildir.

Saldırı Senaryosu

Bir çok kullanıcının üyeliğinin bulunduğu bir sistemde A ve B kullanıcılarına ait bilgilerin yer aldığını varsayalım. A kullanıcısına ait adres, telefon numarası ve e-posta bilgileri kendi profilinde kayıtlı olarak tutulmaktadır. Aynı şekilde B kullanıcısı içinde benzer bilgiler kendi profilinde yer almaktadır. Bu kullanıcılar normal şartlarda ve kullanımlarda birbirlerine ait olan adresleri, telefon numaralarını ve e-posta bilgilerini görüntüleyemezler ayrıca bu bilgilere erişimleri hakları blunmadığı için karşı tarafın bilgilerinde düzenleme vs. yapamazlar.

IDOR Zaafiyeti bulunan bu sistemde bir kullanıcı kendi bilgilerini görüntülemek istediğinde istemci olarak sunucuya bir istek göndermesi gerekmektedir. Gönderilen istekte kullanıcıyla ilişkilendirilen bir id değeride yapılan istek içerisinde yer almaktadır.

Bir güvenlik araştırmacı olarak bu sisteme giriş yaptığımızda aynı şekilde bizede bir ID ilişkilendirmesi yapılacaktır. Biz sunucudan bir bilgimizi talep ettiğimiz zaman yaptığımız istek içerisinde karşı tarafa kendi id değerimizi kullanarak istediğimiz veriyi belirtecek bir istek göndermekteyiz.

Örneğin uygulama içerisinde e-posta adresimi görüntülemek istersem tarayıcı üzerinden yaptığım istekte,

GET /mail/view/7 HTTP/1.1

host:….

User-Agent:…

..

.

.

 

gibi bir kısım yer alacaktır. Bu kısımda bulunan 7 değeri benim hesabımla ilişkilendirilmiş olan bir id değeridir. Buradan yapılan çıkarımla bilgilerin benim tarafıma döndürüldüğü yerde başka kullanıcılara ait bilgilerinde yer aldığını söyleyebiliriz. Yani burada anlatmaya çalıştığımız husus şudur:

Ben eğer id değeri yerine 7 değilde 16 yazarsam bana 16 id değeriyle ilişkilendirilmiş olan kullanıcının e-posta bilgisini getirecektir.

IDOR zaafiyeti tam olarak bu şekilde çalışmaktadır. Yani yetkimizin olmadığı bir nesneye (Burada bahsettiğimiz nesne e-posta adresidir) yapılan güvenilir olmayan bir istek ile doğrudan erişim sağlayabiliyoruz.

Peki erişim sağladık. A ve B kişilerine ait bilgileri bu şekilde sistem üzerinde farkedilmeden görüntüledik.

Peki!

Ben uygulama içerisinde yer alan verilerimi silmek istersem ?

Az önce id’si 16 olan örneğin B kullanıcının e-posta bilgisine eriştiğim metodla kendi bilgilerim yerine başka kullanıcılara ait olan bilgileri silebilirim. Metodoji tam olarak aynı şekilde işleyecektir. Burada istek yaptığım tarayıcı ile sunucu arasında proxy (Burp Suit) kullanarak istek content’ini değiştrip kendi sahip olduğum id değerini B kullanıcısının id değeri olarak sunucuya gönderiyorum.

Gönderilen istek örnek olarak şöyle olabilir.

Get /mail/delete/16 HTTP/1.1 ….

host:…..

User-Agent:…

..

.

.

Burada mailler içerisinde ID=16 olan kullacınını e-posta bilgisinin silinmesini söyledik. Sunucu tarafında tekrar bir yetkilendirme kontrolü olmadığı için B kullanıcısının e-posta bilgisi sistemden silinmiş oldu.

IDOR zaafiyetinden yararlanarak yapılabilecekler bunlarla sınırlı değildir. IDOR zaafiyeti bulunan bir e-ticaret sitesi üzerinde alışveriş yapılırken sipariş verdiğimiz ürünün fiyatını bu yöntemle değiştirebilmemiz ve farklı bir fiyat ile ürünü alabilmemiz söz konusu olabilir.

(Tabikide Bu Bir Suçtur ve Yasal Yaptırımları Vardır !)

SONUÇ
  • Yetkilendirilmediğimiz bir veriyi

    • Okuyabiliriz

    • Silebiliriz

    • Değiştirebiliriz

  • Kişisel verilere doğrudan erişim sağlayabiliriz.

  • Uygulama ile ilgili sabitleri değiştirebiliriz. (Ürün fiyatı vs)

  • IDOR zaafiyeti kullanarak sisteme saldırıda bulunan bir kişinin anlık olarak tespit edilmesi saldırı tespit ve krouma sistemleri tarafından farkedilmesi gibi bir durum şuan için söz konusu değildir. Çünkü burada kullanılan yöntemde herhangibir kaba kuvvet saldırı veya sisteme yönelik bir atak yoktur. IDOR tamamen yetkilendirme kontrollerinden kaynaklı bir zaafiyettir.

Not: Bu makale IDOR zaafiyeti hakkında kısa bir bilgilendirme ve tanımlama amaçlı olarak yazılmıştır. Gördüğünüz hatalar veya eksiklikler olabilir. Bunları bana bildirirseniz mumnun olurum.

Okuduğunuz için teşekkür ederim,

İyi günler dilerim.

Sağlıcakla kalın.


Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir