IDOR Insecure Direct Object Reference Zafiyetleri

Herkese merhabalar

Bu yazımızda Insecure Direct Object Reference konusuna değineceğiz fakat yazıya başlamadan önce bir web uygulamasının nasıl çalıştığını anlamak gerek.Bir web uygulamasının başında gelen attack vektörleri kritik olarak input lardan kaynaklanır.İnput bir web uygulamasının çalışması için sizlerden direktif almasıdır.Uygulama hiçbir direktif almayan uygulamaları düşünelim sadece saatleri gösteren tek amacı bu olan bir web sitesinde attack vektörlerinin alanı oldukça dardır.

HTTP içerisinde yer alan tüm input propertyleri bir attack vektörüdür.

Ne demek bu IDOR ?

Bir web uygulaması çalışırken kullanıcıdan aldığı veriler ile veritabanındaki bir takım verilere erişim sağlayıp basit crud(create,read,update,delete) gibi işlemleri yapabilmektir.Örnek olarak bir ticaret uygulamasında başkasının adresini göremeyiz bunu görebilmek bu zafiyet IDOR kategorisine girebilir.Örnek olarak bir ticaret sitesinin adres kısmını düşünelim bu adres kısmında yer alan delete request’i aşağıdaki görselde yer almaktadır.

word image 52

Görselde yer alan get request inde 15 id ye sahip adress’i silebiliyoruz peki aklımıza 15 varsa 14 ‘de vardır.Bunuda requesti durduran burp suite ile drop layarak yakalayabiliriz.Zafiyetin adında geçen obje kelimesi buradan gelir.Şimdi burada 15 yerine 14 yazar isek başka kullanıcının adresini silmiş olabilir miyiz? Eğer yazılımcı bunun ile ilgili bir önlem olmadıysa silebiliriz evet fakat bir authorization failure gibi hata dönüyor ise burada işler biraz kızışıyor fakat bu hata sonucu biz veriyi silemeyiz gibi bir sonuç çıkarmak yanlış olur fakat silebilir isek burada yazımda bahsettiğim IDOR var diyebilirdik yani bir objeye doğrudan kontrolsüz şekilde erişmek ,bu zafiyet ile beraber bir zafiyet türü daha karşımıza çıkıyor burada bu iki zafiyet farklı konulardır birbiri ile karıştırılmamalıdır. Missing Function Level Access Control(MFLAC) bu zafiyet temelinde yetkisiz bir function erişmektir.Örneğimizdeki delete işleminde yer alan action bir başka isim girersek örneğin edit şeklinde gui ‘de olmayan bir action girersek ve bu function da yetki kontrolü yapılmadığı için başka bir kullanıcının adresini bulabiliriz bu senaryoda da MFLAC zafiyeti devreye girer.Kısacası bizim baska birinin adresini görmemiz (idleri değiştirerek )demek IDOR zafiyeti kategorisindedir fakat edit action erişebildiğimiz ve yetki kontrolü olmadığı için başka bir userın adresine ulaşmamız MFLAC zafiyeti kategorisindedir.

Şimdi bu işlemleri yani edit kısmını bulmamız için geçen senaryoları burp suite ile brute force tekniği ile kolaylıkla nasıl yaparız buna bakalım.İlk olarak proxy kısmına gelelim ve bizim requesti bulalım

word image 53

daha sonra bunu sağ tıklayarak repeater’a(send repater) gönderelim buradan request ve response mesajlarını dinledikten sonra delete yazan actionname değişmesi için delete yi select seklinde alalım ve sağ tıklayarak Intruder menüsüne gönderelim daha sonra payload options list alanına gelelim burada pro kullanıcılar için add from list var bunun içinde form field name diyerek popüler actionName’lerini bizim için listeye ekler word image 54

fakat pro olmayanlar bu isimleri eliyle tek tek eklemek zorunda devamında start attack butonuna basarak dönen ruquestlerden 404 hatasından başka bir error dönen function yok ise length kısmına bakalım burada bir farklılık var ise bu function üzerinde yoğunlaşabiliriz.

IDOR zafiyeti bulunması en zor zafiyetlerdendir ve geliştiriciler tarafından önlem alması zor zafiyetlerdendir çünkü herhangi bir payload yoktur. Güvenlik zafiyetleri ikiye ayrılır teknik ve business logic zafiyetler burada konu olan IDOR business logic zafiyeti kategorisine girer yani herhangi bir payload yada otomatik testlerde karşımıza çıkmaz.

Son

Buraya kadar okuduğunuz için teşekkürler.Gelecek yazımızda IDOR zafiyeti ile ilgili uygulamalı bir yazı gelicektir.Herkese sağlıklı günler ve Hayırlı bayramlar…

By