


IDOR Zafiyeti Nedir?

Uygulamada id, pid, uid ve benzeri birçok değişken olabilir. Bu değerler çoğunlukla
HTTP parametreleri olarak görülmesine rağmen, üstbilgilerde ve çerezlerde bulunabilirler. Saldırgan, değerleri değiştirerek diğer kullanıcıların nesnelerine erişebilir, bunları düzenleyebilir veya silebilir. Bu güvenlik açığına IDOR adı verilir.

İlk olarak, yazılım geliştiricileri tarafından geliştirilen uygulama akışını anlanmalıdır. Oturum açan kullanıcı web / mobil uygulamasında oturum açtığında tüm modül işlevlerinin ve alt modül işlevlerinin anlaşılması gerekir. Bu güvenlik açığının, güvenlik testindeki XSS, CSRF kadar ve kolayca keşfedilemeyen bir tür güvenlik açığı (otomatik test veya manuel test) kadar şiddetli olduğunu hatırlamak da önemlidir.
IDOR güvenlik açığı, kullanıcı ve sunucu arasında aşağıdaki resimde gösterilmektedir.


Bu makalede, aşağıdaki konular ele alınacaktır:
IDOR güvenlik açıklarının bulunabileceği enjeksiyon noktası nasıl bulunur?
Oldukça basit görünen bazı IDOR güvenlik açığı ipuçları ve karşılaştığımız en iyi deneyimler.
IDOR güvenlik açığı test edilirken dikkate alınması gereken önlemler.
Temel yetkilendirme kontrolleri nasıl sağlanır?

Etkili ve hızlı IDOR güvenlik açığı testi
IDOR güvenlik açıklarını hızla test etmek için tarayıcının gizli sekmesini kullanabilirsiniz. Bu nedenle, normal sekmeyi normal kullanıcı olarak kullandığınızda, gizli sekmeyi saldırgan olarak kullanabilirsiniz. Bu, çıkış yapmamanızı sağlayacaktır.
Tüm istekleri kontrol etmek için Burp Suite'in HTTP Geçmişi sekmesini kullanabilirsiniz. Cihaz (tarayıcı, telefon, tablet) ile uygulamanın sunucusu arasındaki tüm trafiği gösteren HTTP Geçmişi özelliği. Ayrıca, hızlı test için Burp Suite'in kapsam (scope) özelliğini kullanabilirsiniz. Kapsam özelliği bir hedef listesi yapmak için yararlı olabileceğinden ve kapsam özelliği test kapsamınız için yalnızca ilgili verilerin gösterilmesine izin verir.

Eklenen bu kapsam değerini verilen kapsama göre aşağıdaki gibi düzenleyebilirsiniz

Son olarak, HTTP Geçmişi sekmesinde Yalnızca kapsam öğelerini göster i (Show only in-scope items ) seçerek aşağıdaki filtrelemeyi yapmanız gerekir.


Tüm istekleri yakalayın
IDOR güvenlik açığı testi yaparken, temel olarak, web / mobil uygulamanın oluşturulması gereken tüm istekleri yerine getirmeniz gerekir. Çünkü uygulamada bir şeyi değiştirdiyseniz, bu durumu kullanarak başka istekler de oluşturabilirsiniz. WSDL dosyası, Swagger sayfası vb.Gibi uygulamanın tüm API isteklerine sahipseniz ve düzenli olarak çalışıyorsa, şanslısınız demektir. Bunu kullanabilirsiniz ve IDOR testi için size kolaylık sağlayacaktır.

Bir programda, web uygulaması bir uygulama içi mesajlaşma sistemi içeriyordu. Kullanıcı diğer kullanıcılara mesaj gönderebilir ve kendi mesajlarına başka kullanıcılar ekleyebilir. Kullanıcı kendi iletilerinden birine erişmeye çalıştığında, bir istek / messages / 5955 e gitti ve kendi ileti kimliği 5955 gibi görünüyor. Benzer şekilde, / messages / 5955 isteğinde bulunarak başka bir kullanıcının iletisine erişmeye çalışırken iletiye erişilmedi. Kullanıcı kendi mesajına başka bir kullanıcı eklemek istediğinde, aşağıdaki gibi bir istek ortaya çıkar.

POST / mesajlar / 5955 / invite HTTP / 1.1Host: örneksite.comKullanıcı-Aracı: Mozilla / 5.0 (Macintosh; Intel Mac OS X 10.12; rv: 52.0) Gecko / 20100101 Firefox / 52.0 Kabul: * / * X-İstendi-İle : XMLHttpRequestCookie: my_cookiesConnection: closeuser = testaccount2
Ve bu istek incelendiğinde, kullanıcı kendisini diğer kullanıcıların mesajlarına ekleyebilir ve tüm mesajlara erişebilir.
Ayrıca, IDOR güvenlik açığını tanımlamak için uygulamadaki rollerin iyi anlaşılması gerekir. Bir rolün ne yapması ya da yapmaması gerektiğini biliyorsanız, zayıflık tespiti aşamasında çok yararlı olacaktır. Yani öncelikle uygulamayı derinlemesine anlamalısınız.
Enjeksiyon noktaları nasıl bulunur?
Daha önce de belirtildiği gibi, uygulamanın tüm özelliklerini kullanarak IDOR güvenlik açığı testi için birçok istek bulabilirsiniz. IDOR güvenlik açığı testlerinde API uç noktaları sağlanmadığında, .html kaynak kodu veya .js dosyaları yararlıdır. Bu dosyalar genellikle ilginç şeyler ve ajax istekleri içerir. IDOR güvenlik açığı testi, bu dosyalarda sunulan istekler kullanılarak gerçekleştirilebilir. Bu, uygulama tarafından daha önce yapılan istekler ve gelecekteki olası istekler olabilir.

Şanslıysanız, yalnızca yetkili bir yönetici kullanıcının javascript dosyalarında görmesi gereken istekleri görebilirsiniz. Bu nedenle, kaynak kodu ve özellikle javascript dosyaları iyi analiz edilmelidir.
Ayrıca, web uygulamasının eski sürümünü archive.org da arayabilir ve eski javascript dosyalarında yararlı istekler bulabilir veya dorks kullanarak arama motorlarında istek arayabilirsiniz.

Bazı durumlarda kimlik değerleri 1, 2, 3, 100, 1000 vb.Gibi benzersiz değildir, bu kimlik değerleri kodlanabilir veya karma değer olabilir. Kodlanmış bir değerle karşılaşırsanız, kodlanmış değerin kodunu çözerek IDOR güvenlik açığını test edebilirsiniz. Karma bir değerle karşılaşırsanız, karma değerinin erişilebilir veya öngörülebilir bir değer olup olmadığını test etmelisiniz. Başka bir durumda karma değerine Yönlendiren başlığından erişebilirsiniz, böylece bu senaryolar çoğaltılabilir.

Örneğin, başka bir kullanıcının nesnelerine erişemezsiniz ancak nesnenin karma kimlik değerini nesne sayfasının kaynak kodunda bulabilirsiniz, nesnenin karma kimliğini kurban kullanıcıdan bir uygulama içi iletide bulabilirsiniz (bu, etkiyi azaltır) hata). Böylece X ve Y olarak 2 test hesabı oluşturabilir, ardından Y'nin Burp Geçmişindeki isteklerinde X'in karma kimlik değerini deneyebilirsiniz.
Başka bir konuya değinirsek, bazı uygulamaların istekleri sizi korkutabilir. Örneğin, SmartSheet'in birden fazla parametre içeren isteği çok karmaşık görünüyor.

Bu istekte enjeksiyon noktasını bulmak istiyorsanız, Burp Suite'in karşılaştırma aracını kullanabilirsiniz. İsteğe sağ tıklayıp Karşılaştırıcıya
Gönder seçeneğini seçmelisiniz. Ardından başka bir nesneyi kullanmak için aynı isteği oluşturabilir ve karşılaştırıcıya gönderebilirsiniz.
Karşılaştırma aracını ziyaret edip Kelimeler düğmesine tıkladığınızda, değişen noktaları gösteren bir pencere açılacaktır.

HTTP yanıtları için aynı yöntemi kullanabilir ve farklılıklarını inceleyebilirsiniz.
Moderatör tarafında düzenlendi:
