API Testing

API Nedir?

  • API'ler (Uygulama Programlama Arayüzleri) yazılım sistemlerinin ve uygulamaların iletişim kurmasını ve veri paylaşmasını sağlar.

  • Tüm dinamik web siteleri API'lerden oluşur, bu nedenle SQL enjeksiyonu gibi klasik web güvenlik açıkları API testi olarak sınıflandırılabilir.

Yöntemler

Recon

Github'da arama yaparak bu api için bir sızmış bilgi veya kaynak kod varmı diye bakabiliriz.

Postman Toplama

Postmanda proxy ayarlayın ve foxyproxy ile bütün istekleri postman'a yönlendirin.

Swagger Toplama

Swagger Editor: https://editor.swagger.io/

Dökümantasyon Sayfası

Api'nin dökümantasyon veya listeleme sayfasına erişip erişilemediğini kontrol edebiliriz.

Parametre Ekleme

Eğer bir api'ye istek atılırken bir nesne gönderiliyor ise bu nesneye yeni parametreler ekleyerek göndermeyi deneyebiliriz.

Bu gönderilmeyen parametreler genellikle başka GET isteklerinde görülebilir.

Server Side Paramater Pollution

Eğer sunucu tarafı parametreleri ayıran & karakterini doğru işlemiyorsa sunucuda çalışan koddaki parametreleri değiştirebiliriz.

Öncelikle %26 ile bir parametre eklemeye çalışıyoruz. Eğer sunucu bir hata veriyorsa zafiyet vardır.

Sonrasında %23 karakteri ile sunucuya hata verdirip gizli bir parametre var mı diye kontrol ediyoruz. Eğer varsa muhtemelen hata mesajında yazar.

Bulduğumuz parametreyi %26 ile ekleyip düzenleyebiliriz.

HTTP Method Değiştirme

Eğer bir api isteği bir http methodu ile yapılıyor ise diğer http methodları denenebilir.

Broken Object Level Authorization (BOLA)

Saldırganın kendine ait olmayan bir veriye erişmesini sağlar. Eğer uygulamada düzgün erişim kontrolu yapımıyorsa ortaya çıkar. Web güvenliğinde biz bu zafiyeti IDOR olarak biliriz.

Broken Authentication

Eğer aşağıdaki kurallar yok ise brute force denenebilir.

Broken Object Property Level Authorization

Unrestricted Resource Consumption

Broken Function Level Authorization

Unrestricted Access to Sensitive Business Flows

Server Side Request Forgery

Security Misconfiguration

Improper Inventory Management

Eski api versiyonları halen silinmemiş olabilir. Bu api servislerinde bırakılmış kritik bilgiler olabilir.

Unsafe Consumption of APIs

Mass Assignment

Mass Assignment zafiyeti, kullanıcıdan gelen verilerin doğrudan model nesnelerine atanarak yetkisiz alanların güncellenmesi riskidir.

Bu gizli parametreleri bulmak için Arjun veya ParamMiner kullanılabilir

Önlemler

  • API'nizin herkesin erişimine açık olmasını istemiyorsanız belgelerinizin güvenliğini sağlayın.

  • İzin verilen HTTP yöntemlerinden oluşan bir izin listesi uygulayın.

  • Her istek veya yanıt için içerik türünün beklendiğini doğrulayın.

  • Bir saldırgan için yararlı olabilecek bilgileri vermekten kaçınmak için genel hata mesajları kullanın.

  • Yalnızca mevcut üretim sürümünde değil, API'nizin tüm sürümlerinde koruyucu önlemler kullanın.

Kaynaklar

Portswigger Academy: https://portswigger.net/web-security/api-testing

HTB API Attacks: https://academy.hackthebox.com/course/preview/api-attacks

APISEC University: https://www.apisecuniversity.com/courses/api-penetration-testing

Last updated