API Güvenliği | (IDOR)

Yayıncı: Secunnix Editor

Yayınlanma Tarihi: 2022-05-19

Herkese merhaba, bugün API Security serisine devam ediyoruz.

OWASP API Security Top 10 : API1:2019 Broken Object Level Authorization ele alıyoruz

Broken Object Level Authorization (IDOR) nedir?

Uygulamanın kullanıcıya sağladığı bazı nesneler vardır, örneğin bu nesneler kullanıcının adını ve soyadını getirir. veya kullanıcının kullanması veya girdi girmesi için bir dizi alan oluşturur Kullanıcıya bırakılan bu nesneler tüm koşulları sağlamadan doğrudan çalışırsa bir güvenlik açığı ortaya çıkacaktır. uygulama tersine çalışacaktır, buna IDOR diyoruz, yani Insecure direct object reference.

Evet, python ile çalışan bir web uygulaması var, şimdi önceki sayılarda yaptığımız gibi bir senaryo üzerinden devam edelim, uygulama hakkında bilgi toplamaya başlayalım çünkü redteam eventleri genellikle sızma testi yapılacak yerlerde api kullandığında, ve eğer bu api public olmayan bir api yapısıysa, bu api hakkında bilgi toplamamız gerekiyor, şimdi OWASP Dirbuster aracını kullanarak faydalı bilgiler toplamamız gerekiyor.

Evet veri toplama aşamasına geldik http://localhost:5000/api/backup/api.json bir json hurdası bulduk hemen inceleyelim ve detaylı bilgi toplama aşamasına geçelim.

Çok güzel bir 2 bin satırlık json yapısı, bu yapıda veriler kayıt altına alınıp belirtilen adrese post ve get yollarını kullanılarak sorgulanır, burada hem IDOR hem de SQL enjeksiyon açıkları çok yaygındır. Şimdi json verilerini detaylı olarak görmek ve derlemek için POSTMAN aracını kullanacağız.

Bulduğumuz api.json verilerini POSTMAN’a aktarıyoruz

Gördüğünüz gibi, tüm json yapısı ortaya çıkıyor. Şimdi gidip kendimize bir kullanıcı oluşturalım.

Evet, kaydımız tamamlandı, şimdi sisteme API üzerinden giriş yapalım.

Giriş işlemi tamam

Bize verilen bu tokeni kayıt edelim bize lazım olacaktır.

Books adında bir yapı oluşturulmuş ve burada kitapların isimleri ve kitapların sahibi yazıyor, kitap değil başka bir isim olabilir senaryo tamamen size kalmış. Şimdi diğer kullanıcıları rahatsız edebilecek bazı şifreler veya bazı nesneler bulmamız gerekiyor.

Token girişi olan bir alan buldum, giriş yaparken bize verilen tokeni buraya girdim

Evet tamamı burada http://192.168.184.1:5000//books/v1/ Kullanıcılar için kitap ekleme hizmetinin kullanıcı bilgileri burada bir cebeci kullanıcısı ile sisteme giriş yaptık. Kitap servisinde bir kullanıcı tarafından key adı altında yayınlanan secunnix adı altında bir kitap vardı. secunnix kullanıcısının cebeci kullanıcısı ile kitap şifresini aldık çünkü sistem sadece kullanıcının tokene sahip olup olmadığını kontrol ediyor, kullanıcı adı karşılaştırılmıyor

Broken Object Level Authorization (IDOR) Nasıl Engellenir ?

Uygulamamız bir python web uygulamasıdır, bu yüzden burada python hizmetleri için bir çözüm sunacağım, ancak diğer Yazılım dillerini sorarsanız hepsinin temeli aynı kullanıcının her hareketini filtrelemek ve tamamen çift sorgu içermesidir yani bir değer girdiğinizde hemen ana sonuca göndermeyin, diğer değeri isteyin ve alın. IDOR probleminden kurtulun.

Zafiyet tam olarak Burada kitap = kitap.query.filter_by(kitap_title=str(kitap_title)).first() kitaptaki tüm değerler sadece token istiyor kullanıcı ismi için sorgu yok Bu nedenle saldırganın başka bir kullanıcının kitap şifresini görebilmesi için sadece kendi token’ı ile sisteme giriş yapması yeterlidir. Çözüm olarak kitap = kitap .query.filter_by(user=user, kitap _title=str(kitap .title)).first()

Müşteri Portföyümüz