Insecure Direct Object Reference (Idor) Zafiyeti Nedir?

INSECURE DIRECT OBJECT REFERENCE (IDOR) ZAFİYETİ NEDİR,NASIL SÖMÜRÜLÜR,KORUNMA YOLLARI NELERDİR?

İdor olarak nitelendirilen “insecure direct object reference” zafiyet çeşidi bir nevi request değiştirme metodolojisini uygular yani bir kullanıcının izni olmadan onun yerine veri silme,ekleme,değiştirme,okuma gibi işlemlerin yapılabildiği tehlikeli bir zafiyet türüdür.

Bu konuyu biraz daha açmak gerekirse http metodları olarak nitelendirilen get,post,delete,put vb. metodlar bulunmaktadır bunlar genel olarak request(sorgu) ve response(cevap) olarak 2 ana başlık altında incelenir.

Bir web sitesine yapılan requestin get,post veya put mu olduğunu burpsuite aracı ile görüntülememiz mümkündür.

Şimdi bazı anahtar kelimeleri kısaca açıkladığımıza göre asıl konumuza dönelim.

Idor zafiyeti request yani kullanıcının gönderdiği sorgular üzerinde değişiklik yapabilme yetkisine sahip olunan sistemler üzerinde var olan bir açıktır.

Aslında bu şekilde anlatılınca kolay bir zafiyet gibi görünüyor ama bulunması ve farkedilmesi özellikle sızma testi ve bugbounty gibi gerçek senaryolarda oldukça zor bir zafiyet türüdür.

Şimdi bunu size bir görsel üzerinde göstermek istiyorum.

Konuyu biraz daha anlaşılır olması için bir görsel yardımıyla anlatmaya çalışacağım.

Resimde gördüğünüz gibi bir kişi var ve bu kişi “1000” ve “1002” numaralı dokümanları “1000” ve “1002” numaralı kullanıcılara gönderiyor  yani doküman sahiplerinin her biri farklı kullanıcı id’sine sahip kişiler.Şimdi şunu düşünün sizin içinde kendi verinizin olduğu bir dokümanın yanlış bir kullanıcının eline geçmesi veya bir kullanıcının sizin göndereceğiniz verileri değiştirmesi ne kadar kötü olurdu değilmi işte idor zafiyeti olan bir sistemde ortada gördüğümüz kırmızı profildeki şahıs 1000 ve 1002 kullanıcısında giden requesti değiştirip onların yerine onların kullanıcı id’si ile sisteme girip o bilgilere sahip olabilir yada kullanıcılardan giden belgeleri istekleri değiştirip oldukça kötü sonuçlara yol açabilir o nedenle bulunması oldukça zor ve var olan sistemde karmaşalara yol açabilecek bir o kadar da tehlikeli bir zafiyet türüdür.

Aslında zafiyetin nedeni kullanıcıdan aldığı verinin yeterli yetkilendirme sorgusu yapmadan görüntülenmesine ve değiştirilmesine izin vermesinden kaynaklanır.

Yukarıda da bahsettiğim gibi bulunması zor açıklardan biri olan idor zafiyeti,burpsuite aracı kullanılarak request ve responsları incelenmesi sonucunda tespit edilebilir bunun yanında burpsuite eklentilerinden “Authz, AuthMatrix” kullanılarak zafiyet testi gerçekleştirilebilir.

Idor zafiyeti genellikle e ticaret bazlı sitelerde meydana gelir.

Tabi kullanıcının request gönderebildiği istekte bulunabildiği her sitede olma olasılığı bulunmaktadır.

 

Şimdi sizlere “bWAAP” adlı local hostunuzda çalıştırabileceğiniz bir pentest lab üzerinde aşamalı bir şekilde idor zafiyetini görsel ile anlatmaya çalışıcağım.

Bwapp makinesi localhost’umuzda çalıştırabildiğimiz içinde birçok web zafiyet çeşitlerini barındıran bir makinedir.Sanal makine olarak kullanabileceğiniz bu makine aynı zamanda kali linux içerisinde kurularak da kullanılabilir size hem sanal makine hem de kali linux içerisinde nasıl kurulacağının anlatıldığı youtube videolarının linklerini bırakıyorum.

Sanal makine olarak virtualbox kurulum:

https://www.youtube.com/watch?v=syBbcK9PrA0

Kali linux içine kurulum:

https://www.youtube.com/watch?v=yLFmlW0JC8c

Bwapp ile İdor zafiyeti sömürü örneği:

Öncelikle bwapp makinemi ve kali linux makinemi çalıştırıyorum ve tarayıcı üzerinden bwapp makinemin ip adresine gidiyorum.Kullanıcı olarak giriş yaptıktan sonra sağ üsteki seçim menüsünden “insecure dor (order ticket)” olan kısmı seçip “hack” butonuna basıyorum.

Ardından karşımıza bir bilet alma sayfası çıkıyor.

Burada “1” olarak gözüken değer bilet adetini göstermektedir şimdilik 1 olarak bırakıyorum ve “confirm” butonuna tıklıyorum.

Siyah çizgiyle çizmiş olduğum ilk yerde bilet adeti ikinci yerde ise fiyatı gözükmektedir.

Şimdi bu siteye gönderdiğimiz request’i burpsuite aracı ile analiz edelim.

Burpsuite aracımızı açıyorum ve “proxy” kısmındaki “options” seçeneğindeki ip adresi ve port bilgisini kontrol ediyorum.

Ve bu değerleri firefox tarayıcım da “preferences-network settings” ayarlarına giderek uyguluyorum.

İşimiz bittiğinde tekrardan “use system proxy settings” seçeneğini işaretleyeceğiz.

Şimdi sitemize geri dönüp tekrar bilet adetini 1 olarak seçili bırakıp “confirm” butonuna tıklıyorum ve burpsuite aracında proxy bölümünden request’i inceliyorum.

Burada data kısmında görünen “ticket_quantity” web sitesinde bulunan bilet adetini “ticker_price” ise bilet fiyatını temsil etmektedir.

Şimdi buradaki “1” ve “15” değerlerinde değişiklik yapmaya çalışacağız.

1” değerini “10”,”15” değerini ise “-100” olarak değiştirdim ve “forward” butonu ile isteği web sitesine ilettim.

Ve evet gördüğünüz gibi request değişikliği yapmayı başardık 1 olarak gönderdiğimiz bilet sayısını yetki denetimi olmadığı için 10 olarak ve 15 euroluk fiyatı -1000 euro olarak değiştirmeyi başardık.

Aslında biz -100 olarak değiştirmiştik ama burada -1000 olarak gözükmekte sistemsel bir hata olabilir sonuç olarak amacımıza ulaştık ve sipariş bilgilerini değiştirip – olarak sipariş vermeyi başardık.

Gördüğünüz gibi böyle bir açıklığın bir e ticaret sitesinde sipariş verirken ne kadar kötü sonuçlar doğurabileceğini öğrendik bwapp üzerinde farklı idor zafiyet formları bulunmakta diğerlerini de inceleyebilirsiniz.

İdor Zafiyetinden Korunma Yolları:

  • İlk olarak siteye yapılan data requestlerinin tamamının kontrol edilip doğrulanması gerekir.
  • Nesneler ve kullanıcılar arasındaki yetkilendirme hatasız ve düzgün yapılmalıdır.
  • Saldırganın işini zorlaştırmak için nesnelere normal sayı yerine karmaşık sayılar atanabilir.

Bu yazımızda oldukça tehlikeli bir açık olan idor zafiyetinin ne olduğunu,nasıl sömürebildiğini ve nasıl önlem alınması gerektiğinden bahsettik umarım faydalı olmuştur.

About The Author

Reply