IDOR (Insecure Direct Object References)

Merhaba!!!

Insecure Direct Object References’i Türkçe’ye Güvensiz Doğrudan Nesne Referansları olarak çevirebiliriz.

IDOR bir web uygulamasında kullanıcıdan alınan girdiden nesnelere doğrudan erişim sağladığında meydana gelir. Bu zafiyetin sonucunda saldırganlar izinleri(yetkilendirme sistemlerini) atlatabilir, sistemde doğrudan erişim kaynaklarına atlayabilir. Örneğin başka kullanıcıların bilgilerini değiştirmek, veritabanı kayıtlarına erişmek gibi yetkiniz olmayan işlemlere izin verir.

Saldırganlar bu zafiyeti doğrudan bir nesneye işaret etmek için kullanılan bir parametrenin değerini değiştirerek sömürebilir. Zafiyetin nedeni web uygulamasının kullanıcıdan aldığı girdinin yeterli yetki kontrol işlemi yapmadan bir nesneyi almak için kullanmasıdır.

Test amaçlı BWAPP üzerinde IDOR için olan bölümden bazı kısımları paylaşacağım. Kendinizde denemek için buradaki linkten indirip, kurabilir ve deneyebilirsiniz.

İlk senaryomuzda kullanıcıya ait secret(gizli) değerinin değiştirme sayfası bulunmaktadır. Saldırgan kendisine ait olmayan başka bir kullanıcının secret değerini değiştirmeye çalışacak.

Ekran görüntüsündeki gibi bir arayüzü bulunmakta. İlk önce deneme amaçlı bir değer gönderiyoruz ve burp suite aracı ile aradaki isteği inceliyoruz.



İstekte değiştirmek istediğimiz değer ve giriş yapan kullanıcı gözükmekte. Bu şekilde gönderip isteği inceleyelim.

Herhangi bir problem olmadan değiştirildi.



İstekte giriş yapan kullanıcıyı örneğin “Admin” kullanıcısıyla gönderdiğimizde neler olabilir ?



Değiştirildi ama neden ? Çünkü secret değerinin değiştirilirken herhangi farklı bir doğrulama yapılmadı. Sadece login nesnesindeki değer baz alınarak işlem gerçekleşti. Bizde login nesnesine doğrudan erişimimiz olduğu için değiştirebildik.



İstersek veritabanı kayıtlarındanda inceleyebiliriz.



Diğer bir senaryomuz ise ücreti 15 EURO olan bir bileti istediğimiz sayıda sipariş verip sayıya göre ücretini hesabımızdan kesiyor.



Aradaki isteği de incelemeyi ihmal etmiyoruz. Buradaki problem adet sayısının yanında bilet ücretinide görebiliyor olmamız belki de değiştirebiliriz.



Örneğin 1 bilet sipariş veriyoruz. ve 15 EUR ödememiz gerekiyor.



Büyük bir miktar yazıp aradaki isteği inceyelim. 777 tane bilet sayısı girip ücretini de 0 girdiğimizde neler olabilir ?



777 tane bileti 0 EUR’ya almış oluruz. Olması gereken bizim o değeri değiştirmemize izin vermemesi gerekir ki böyle bir zaafiyet ortaya çıkmasın.


Idor zafiyetinden etkilenmemek için birbirine bağlı nesneler de değişikliğe izin verilmemesi gereken nesneyi değiştirdiğimiz zaman hata vermesi ve işlemi yapmamasını sağlayarak. Bunuda her işlem’e özel “token” tarzı değerlerle kontrol edilebiliriz.

Okuduğunuz için teşekkürler. Yazılarımda herhangi bir hata varsa bildirmekten çekinmeyiniz…

Not: Yazılan herşey eğitim amaçlıdır farklı amaçlarla canlı sistemler üzerinde denemeyiniz.

Bir cevap yazın

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