IDOR Zafiyeti Nedir? Nasıl Sömürülür?

IDOR Zafiyeti Nedir? Nasıl Sömürülür?

Herkese merhaba. Bu yazımda, IDOR(Insecure Direct Object References) zafiyetinden söz edip, bu zafiyetin sömürülmesini bilet satın alma işlemi üzerinden göstereceğim. Bu yazımda;

  • IDOR zafiyetinin ne olduğunu,
  • Hangi durumlarda oluştuğunu,
  • Burp-Suite ile web trafiğinin arasına girmeyi,
  • bWAPP Platformunu kullanmayı,
  • Tanesi 15 Euro olan 100 adet bileti 1 Euro’ya satın alma,
  • IDOR zafiyeti nasıl önlenir?

gibi konuları işleyeceğim. Öncelikle IDOR dan söz edelim.

IDOR Nedir? Nasıl Oluşur?

Bir web uygulama zafiyetidir. Herhangi bir kullanıcıdan alınan girdinin, nesneye ya da nesnelere doğrudan erişim sağlanmasıyla ortaya çıkmaktadır. Yani, iznimiz olmadan bir veriye ulaşmaktır. Bir örnekle açıklamak gerekirse bir sitede “dosyanın kaynağını görmek için “dosyayı görüntüle” yi seçin ve tıklayın. Tüm dosyaların listelenmediğini unutmayın.” uyarısını gördüğümüzü varsayalım. Peki biz tüm dosyaları listeleyebilirsek ne olacak? İşte o zaman IDOR zafiyeti olduğunu anlayacağız.

Zafiyetin meydana gelme nedeni ise web uygulamasının kullanıcıdan aldığı girdilerin yeterli bir yetkilendirme kontrolü yapılmadan bir nesnenin içerisine alınmasından dolayıdır.

Zafiyet istismarı sonucu bazı yetkilendirmeler atlatılabilmekte ve sisteme erişim sağlanabilmektedir. Herhangi bir uygulamada “id”, “pid”, “uid” gibi birçok değişken olabilir. Bu değerler genellikle HTTP parametreleri olarak görülse de, url de veya çerezlerde bulunabilirler. Saldırgan, değerleri değiştirerek diğer kullanıcıların nesnelerine erişebilirler, bunları düzenleyebilir veya silebilirler. Bu güvenlik açığına IDOR denir. Bu güvenlik açığının, güvenlik testindeki XSS, CSRF kadar ve kolayca keşfedilemeyen bir tür güvenlik açığı olduğu unutulmamalıdır.

IDOR Zafiyeti Bulmak İçin Kullanışlı Araçlar

IDOR zafiyeti, XSS, CSRF gibi zafiyetlere oranla daha zor keşfedilen bir zafiyettir. Uygulama yaparken de kullanacağımız Burp-Suite aracını HTTP isteklerine araya girmek için kullanacağız. Burp-Suite aracı ile nesneye erişip erişemediğimizi görebiliriz. Ayrıca Authz, AuthMatrix gibi IDOR güvenlik açığı testi için Burp-Suite eklentilerini kullanabilirsiniz.

IDOR zafiyetinin ne olduğunu anladığımıza göre uygulamayı gerçekleştirebiliriz.

IDOR Zafiyeti Kullanılarak Bilet Fiyatı Değiştirme

Bu zafiyeti teorik olarak açıkladık. Fakat teorik olarak bilmek tam olarak nasıl olduğunu anlayabileceğimiz anlamına gelmemektedir. En iyi öğrenme yolu uygulayarak gerçekleştirmektir.

IDOR zafiyetini daha iyi anlayabilmek için günlük hayattan bir senaryo verelim. Ben uygulamayı Kali Linux üzerinde bWAPP üzerinden gerçekleştirdim. bWAPP kurmak isterseniz https://youtu.be/XDCZ8FC856s adresinden videoyu izleyerek kurulumu gerçekleştirebilirsiniz. bWAPP dan bahsetmek gerekirse, localhost üzerinde çalıştırabileceğiniz, Web Application zafiyetlerinin alıştırmasını yapabileceğiniz bir ortamdır. Bu ortamda birçok Web Application açığı bulunmaktadır. İndirip deneyebilirsiniz. Şimdi senaryomuza geçelim.

Uygulamaya Geçelim

Diyelim ki üniversitedeki 100 kişilik bir grupla Avrupa’ya trenle seyahat etmeye karar verdiniz. Bu biletin tanesi de 15 Euro olarak belirlendi.

Biletleri siteden sipariş etmek istediğimizde, bize 100 biletin 1500 Euro tuttuğunu belirten bir uyarı gösterdi. Aklımıza bir fikir geldi ve Burp-Suite uygulamasını kullanarak bu sitenin trafiğinin arasına girip HTTP isteklerine göz atmak istedik.

Öncelikle IDOR zafiyetini test edeceğimiz bWAPP ortamını localhostta açalım. Burada “Insecure DOR (Order Tickets)” bölümünü seçip ilerleyelim.

İlerleyince bileti satın aldığımız ekrana gelmekteyiz. Burada “Confirm” demeden önce burp-suite uygulamasını çalıştırmamız gerekmektedir. Kali uygulama ara bölümünden ya da terminal üzerinden “burpsuite” yazarak uygulamayı açalım. Burp-Suite o esnada açılırken, tarayıcıdan da proxy ayarlarını gerçekleştirmemiz gerekmektedir.

Tarayıcıdan “Preferences > Network Settings” bölümünden proxy ayarlarını değiştireceğiz.

“Manuel proxy configuration” seçeneğinden localhost adresimiz olan 127.0.0.1 ip sini ve 8080 port adresini girmeliyiz. Bu ayarla birlikte web istekleri ilk olarak Burp Proxy e gider ve Burp’te bizim yerimize istekleri gerçekleştirir. Bir nevi vekillik yapmış olmaktadır.

Burp-Suite açıldıktan sonra “Proxy > Intercept > Intercept is on” ayarını gerçekleştirerek proxy i aktif hale getirmeliyiz. Aksi takdirde trafiğin arasına giremeyiz.

Intercept ayarını gerçekleştirdikten sonra artık bir web uygulamasını yüklerken istekler önce Burp’e gelecek ve artık trafiği siz yönlendirmiş olacaksınız. bWAPP ortamı localhostta çalıştığı için Burp-Suite bWAPP trafiğini algılayamamaktadır. Uygulamayı denediğiniz zaman muhakkak bu hatayla karşılaşacaksınız. Bu hatayı düzeltmek için tarayıcıya “about:config” yazıp ilerleyin. Burada “network.proxy.allow” ayarını true ya çekip kaydedin. Hatayı bu şekilde düzeltmiş olacaksınız.

Burp-suite artık aktif olarak çalıştığına göre, 100 bileti almak için “confirm” tuşuna bastıktan sonra tarayıcı otomatik olarak bizi Burp-suite ekranına yönlendirecektir. Burada nesneye ulaşabildiğimizi görüntülemekteyiz. Görüldüğü gibi “ticket_price” değerini de istediğimiz şekilde düzenleyebilmekteyiz.

Burada bilet fiyatını 1 olarak değiştirip “forward” a bastığımız zaman, ayarladığımız bilet fiyatı üzerinden toplam tutarın değiştiğini görebileceğiz.

İsteği forward ettikten sonra, önceden 100 tanesi 1500 euro olan biletlerin toplam tutarının 100 Euro olarak değiştiğini görmekteyiz. IDOR zafiyetini bu şekilde sömürmüş olduk.

Hatta tekrar web trafiğinin arasına girerek bilet bilet fiyatını -5 olarak değiştirelim. Görüldüğü gibi artık bileti satan yer bize 500 Euro borçlu durumuna düşmüştür 🙂 Uygulamayı bu şekilde gerçekleştirmiş olduk.

IDOR Açıkları Nasıl Önlenir?

  • İlk olarak, bir uygulama oluştururken tüm normal, API, ajax isteklerini kontrol etmelisiniz.
  • Nesnelerin yetkilendirilmesi düzgün yapılmalıdır.
  • Saldırganın işini zorlaştırmak için, nesnelere normal sayı ve dizeler yerine karma değerler kullanarak korumalısınız.

Bu yazımda IDOR zafiyetinden söz edip, uygulamasını gerçekleştirdim. Bir sonraki yazımda görüşmek üzere. Sağlıklı günler. #evdekal

Kaynaklar

https://www.bugcrowd.com/blog/how-to-find-idor-insecure-direct-object-reference-vulnerabilities-for-large-bounty-rewards/

https://vedatyigit.com.tr/idor-zafiyeti-hakkinda/

Related Posts

Leave a Reply