IDOR Zafiyeti

Hacer Dalkiran
2 min readNov 17, 2021

--

IDOR nedir?

Insecure Direct Object Reference’ın kısaltması olan IDOR zafiyeti bir tür access control vulnerabiliry, yani erişim kontrol zafiyetidir. Web sitesine bir request yaptığımızda dönen cevabı manipule edebilirsek,yani istenenden başka bir objeye ulaşabilirsek, IDOR’u sömürmüş oluruz. Çoğu zafiyette kritik nokta kullanıcıdan alınan inputtadır. Uygulama kullanıcıdan bir input almıyorsa bir saldırı yüzeyi kalmıyor. Diyelim bir web sitesi sadece hazırdaki şehir bilgisini gösteriyor olsun. Bu durumda bir atak yüzeyi kalmıyor. Bu durumda HTTP Requestin içindeki header, get, put parametreleri bize yardımcı olacaktır. Bir web uygulamasını çalışma biçimine baktığımızda kullanıcıdan aldığı bilgiye göre veri tabanındaki bir bilgiyi kullanıcıya gösterme, bilgiyi güncelleme ve silme gibi işlemleri yapar, gerekirse sonucu kullanıcıya gösterir. Diyelim adres bilgileri ve idlerle çalışan bir web sitesi olsun. Eğer ben kendi idmi kullanarak başkasının adresini çekebilirsem, bu zafiyeti sömürmüş olurum.

Buraya kadar tamamsa yetki kısmına geçelim. Bir web sitesinde standart user, super user ve admin gibi farklı yetkilere sahip kullanıcılar vardır. Bunlar arasında yetki yükseltebiliyorsak idor zafiyeti var demektir.

Backend tarafında kod yazılırken, kullanıcıdan alınan id kullanıcıya ait mi değil mi kontrol edilmeden direkt kullanıcının adresini dönüyorsa, istediğimiz kullanıcının adresine ulaşabiliriz. Bu da bir IDOR zafiyeti oluşturur. (MDISEC). Bir kod reviewde ya da birçok yöntemle anlaşılması zordur. Biraz hinlik de gerektirir. Bir kaynak kod analizi aracının da tespit etmesi kolay değildir. Mehmet İnce bu konuda en zor zafiyet türü der, çünkü geliştiricinin ufak bir dikkatsizliği IDOR’a neden olur.

TryHcakMe’deki örneğe bakalım;

http://online-service.thm/profile?user_id=1305

böyle bir web sitesi olsun.

Eğer ben id=1305 yerine id=1000 yazarsam ve bjaşka kullanıcının bilggilerini görebilirsem, bingo, idor buldum demektir.

Kod yazılırken bunu denetleyecek bir kod parçası olmalıdır.

Testleri yaparken en az iki farklı kullanıcı adına ihtiyacımız olacaktır. Böylece birinin bilgileri ile diğer kullanıcının bilgilerini çekebiliyor muyuz görebiliriz.

Eğer birden fazla kullanıcı ile test edeceksek, tarayıcı cacheleri ile uğraşmamak için çok güzel bir araç var. Detaylar için Githubda oluşturulmuş AutoChrome sayfasına bakabilirsiniz.

--

--

Hacer Dalkiran
Hacer Dalkiran

Written by Hacer Dalkiran

Mathematician and Cybersecurity girl

No responses yet