IDOR Practices I

can1337
3 min readNov 14, 2020

--

Bu seride, Bug Bounty yaparken aramayı en sevdiğim IDOR (Insecure Direct Object References) güvenlik zafiyeti üzerindeki pratiklerimi paylaşacağım. Tercihen ararken en zevk aldığım zafiyetlerden birisi olduğu için bu serinin devamı da kafamda oluşmuş durumda ve yakın bir zamanda paylaşacağım.

Konu başlığından da anlaşıldığı üzere bu yazıda IDOR’un ne olduğundan bahsetmeyeceğim. Zira IDOR zafiyeti hakkında temel bilginiz yoksa bu yazıdan önce birçok yerde anlatılmış olan IDOR’un ne olduğunu hakkında bilgi edinmeyi tercih edebilirsiniz.

Genellikle IDOR’un keşfi sırasında hedef üzerindeki ‘workflow’ yani iş akışı anlarına yoğun ilgi gösteririm. Bunları, kullanıcı yetkilendirme akışları, cihazlar üzerindeki iş akışları gibi çoğaltabiliriz.

Recon

Hedef siteye girdiğimizde bizi direkt olarak bir login sayfası karşıladığı için oyunu kuralına göre oynamayı tercih ettim. Normal bir kullanıcı gibi sisteme üye olmaya başladım. Bu sırada Burp Suite üzerinden gönderdiğim tüm request-response döngülerini inceliyordum.

İlk dikkatimi çeken şey, kayıt olduktan sonra aldığım response’un içeriğindeki “userId:16441542” değeri oldu. Kullanıcıya tanımlı ID değeri, ID değerleri bilinmeyen diğer kullanıcıların tespitinde (bir azaltıp, bir arttırmak gibi) büyük rol oynar.
Fakat buna da gerek kalmadan profilimdeki bilgileri inceledikten kısa bir süre sonra anasayfada ‘Who is Who?’ isimli bir sayfa dikkatimi çekti.

Evet, sayfada son kayıtlı olan üyeler ‘Recent’ başlığı altında listeleniyor ve her bir üyenin profiline tıkladığımız zaman “userId” bilgileri de URL’de açık bir şekilde yansıtılıyordu. Birkaç farklı üyelik açmıştım ve ‘Recent’ kısmını doğrulamış oldum. Kayıt sırasında elde ettiğimiz sekiz karakterli ID bilgimiz diğer kullanıcıların ID bilgilerini tespit etmemize yardımcı oldu.

Eğer yeterli doğrulama yoksa, bu ID değerleri üzerinden yapılabilecek bir manipülasyon, saldırganın yetkisi dışındaki özelliklere doğrudan müdahale etmesine olanak tanır.

Detection and Exploitation

Gerekli bilgileri elde ettikten sonra yapmam gereken tek şey, sorgularımı referans almadan kabul edecek ve işleyecek bir güvenlik açığını yani IDOR’u bulmaktı.
Yaptığım kısa keşiflerden sonra tekrar yetkili olduğum profilim sayfasına geri döndüm ve ‘userId’ değerlerini kullanarak işlem yapmamı sağlayacak uç noktaları aramaya başladım.
Oluşturduğum kullanıcıların birinden keşife devam ederken çok geçmeden ‘Delete my account’ seçeneğini gördüm ve Burp Suite üzerinden profilimi silmeye çalıştığım bir istek gönderdim. Bu kısımda aklımda olan şey, ‘userId’ değerleri üzerinden gerçekleşecek basit bir IDOR tespit etmeye çalışmaktı.

İsteğimin data kısmında ‘userId’ bilgisinin işleme alındığını gördüm ve hemen diğer kullanıcılarımın ‘userId’ bilgilerini kullanmaya çalıştım.

‘denemesilinecek’ isimli kullanıcının ‘userId’ (16441538) bilgisini bulunduğum kullanıcının ID bilgisi ile değiştirip sistemden silmeyi denedim. Onaylanan bir dönüş aldım.

Onay işleminden sonra ‘Recent’ sayfasını yeniden yükledim ve ‘denemesilinecek’ isimli kullanıcının Recent listesinden tamamen silindiğini gördüm. Aynı şekilde kullanıcıya giriş yapamadım. Bingo!

Kullanıcıya özgü ID bilgilerinin URL kısmında açık bir şekilde yansıtılması, aynı şekilde kullanıcının silme akışı sırasında bilgilerinin doğrulanmadan sistemden geçirilmesi, saldırganın istediği zaman istediği ID bilgisini kullanarak istediği kullanıcıyı silmesine olanak tanımış oldu.

--

--