Swagger Jacker ile  OpenAPI Tanım Dosyalarını Denetleme

  • Home
  • Blog
  • Swagger Jacker ile  OpenAPI Tanım Dosyalarını Denetleme

Swagger Jacker ile  OpenAPI Tanım Dosyalarını Denetleme

Swagger Jacker veya kısaca “sj”, OpenAPI tanım dosyalarını denetlemek için geliştirilmiş açık kaynaklı bir araçtır. Bu, saldırgan güvenlik profesyonellerinin, tanım belgesinde tanımlanan API rotalarındaki olası güvenlik açıklarını veya yanlış yapılandırmaları belirlemesine olanak tanır.

Swagger nedir?

Swagger, SmartBear Software tarafından oluşturulan bir API geliştirici araçları paketidir. SmartBear’a göre Swagger, 2010 yılında RESTful API’leri tasarlamak için basit, açık kaynaklı bir spesifikasyon olarak başladı. Swagger spesifikasyonu, 2015 yılında Linux vakfına bağışlandı ve OpenAPI spesifikasyonu olarak yeniden adlandırıldı . Bu tanım dosyaları genellikle Swagger UI uygulamalarıyla birlikte kullanılmak üzere halka açık web sunucularında barındırılır ve geliştiricilerin ilgili API üzerinde test yapmasına olanak tanır.

Açığa çıkan tanım dosyalarının önemi nedir?

Birçok tanım dosyasına bir API’nin geliştirilmesini desteklemek amacıyla kasıtlı olarak erişilebilir olsa da, bazen bu dosyalar kasıtsız olarak son kullanıcıların kullanımına sunulur. Bir API tanım dosyası yanlışlıkla kamuya açıklanırsa, dosya, bir saldırganın kötü niyetli olarak yararlanabileceği hassas işlevlere sahip rotaları açığa çıkarabilir. Bu yolların çoğu yalnızca dahili kullanıma yönelik olduğundan, ilgili API geliştirilirken güvenlik dikkate alınmamış olabilir. Bunu akılda tutarak, açığa çıkan bu dosyalar sonuçta IDOR ve SQL enjeksiyon güvenlik açıklarının keşfedilmesine ve bunlardan yararlanılmasına, bilgilerin açığa çıkmasına ve diğer birçok yaygın güvenlik açığı sınıfına yol açabilir; bu da saldırganlara üstünlük ve saldırı yüzeyinde güvenlik açığına maruz kalma olanağı sağlar.

Şartnamenin İncelenmesi

Açık API spesifikasyonuna (daha açık bir şekilde üçüncü versiyona) bakıldığında, OpenAPI nesnesi içinde Swagger Jacker tarafından ayrıştırılan birkaç alan vardır. Dikkate değer ilk şey, bir Bilgi nesnesinden oluşan “Bilgi” alanıdır. Bu nesne, diğer bilgi türlerinin yanı sıra API açıklaması, “Hizmet Şartları” URL’si ve API belgesinin sürümü gibi API hakkında meta veriler sağlar.

Otomatikleştirme komutunu çalıştırdığınızda, ilk olarak Info nesnesinden belgelenen API hakkında bilgi sunulacaktır. Bu, geliştiricinin API’nin nasıl çalışmasını amaçladığı, kimliği doğrulanmış rotaları test etmek için sabit kodlanmış geliştirici API anahtarı gibi hangi beklenen değerlerin aktarılabileceği ve daha fazlası hakkında fikir verebilir.

Güvenlik alanı (OpenAPI nesnesi içindeki başka bir alan) bir Güvenlik Gereksinimi Nesnesinden oluşur. Bu nesne, HTTP temel kimlik doğrulaması gibi yöntemlerden Oauth2 uygulamalarına kadar API için hangi kimlik doğrulama mekanizmalarına izin verildiğini tanımlar. Jon Williams’ın tavsiyesi sayesinde araç, kimlik doğrulama mekanizmaları için spesifikasyon belgesini kontrol eder ve mekanizmaya bağlı olarak, eğer isterse kendi değerini uygulamasını ister.

Otomatik Test

Bu aracın geliştirilmesine yön veren en büyük faktör, genel olarak barındırılan bir spesifikasyon dosyasının keşfedilmesinden sonra API uç noktalarını denetlemek için harcanan önemli miktardaki zamandı. Bazı API’lerde tanımlanmış yüzlerce rota bulunur ve her birinin manuel olarak test edilmesi sıkıcı bir süreç haline gelebilir.

 

 

Kullanıcı bir kimlik doğrulama değerinin uygulanıp uygulanmayacağına karar verdikten sonra araç, spesifikasyonda bildirilen türdeki değerleri otomatik olarak uygularken belgelenen her uç noktaya istekler üretecektir.

Araç 200 OK yanıtı gözlemlerse uç nokta erişilebilir olarak vurgulanır. Benzer şekilde, bir 401 veya 403 durum kodu gözlemlenirse araç, ilgili uç nokta için kimlik doğrulamanın gerekli olduğunu bildirecektir. Bu, bir API’nin zayıf kimlik doğrulama sorunları açısından test edilmesi için gereken süreyi önemli ölçüde azaltır. Ancak tüm otomasyonlarda olduğu gibi bazen en doğru sonuçları elde etmek için manuel olarak doğrulama yapmak en iyisidir.

Manuel Teste Hazırlık

Otomatikleştir komutu, manuel olarak test etmek istediğiniz bazı ilginç komutları döndürürse, hızlı bir şekilde curl komutlarının bir listesini oluşturmak için hazırla komutunu kullanabilirsiniz.

Swagger Jacker ile tanımlanan her API rotası için yanıt kodlarını analiz etme sürecini kolayca otomatikleştirebilirsiniz.

Kıvrılma komutları oluşturulduktan sonra manuel testinizi gerçekleştirmek için gerektiği gibi ayarlama yapabilirsiniz. Aracın gelecekteki güncellemeleri için planlar , IDOR ve SQL ekleme kusurlarını kolayca test etmek amacıyla komutların sqlmap ve ffuf gibi araçlara aktarılmasına olanak tanıyacak .

Kelime Listesi Oluşturma

Hedefe istek göndermek yerine rotaları toplamakla mı daha çok ilgileniyorsunuz? Endpoints komutunun devreye girdiği yer burasıdır. Aşağıda gösterildiği gibi rotaları içeren çıktıyı oluşturmak için uç noktalar komutunu kullanmanız yeterlidir:

Bu makale Tony West’ten alıntıdır.

Comments are closed