VAPI Üzerinden Adım Adım Zafiyet Analizi

Günümüzde web uygulamaları ve servisler büyük oranda API’ler (Application Programming Interface) üzerinden çalışmakta ve kullanıcı ile sistem arasındaki iletişimi sağlamaktadır. API’lerin yaygınlaşmasıyla birlikte, bu ara yüzlerin güvenliği de kritik bir hale gelmiştir. Zayıf yetkilendirme kontrolleri, yanlış yapılandırmalar, gereksiz veri ifşaları ve hatalı sürüm yönetimi gibi problemler, saldırganların sistemlere yetkisiz erişim sağlamasına, hassas verileri ele geçirmesine ve servislerin istismar edilmesine yol açabilmektedir. OWASP tarafından yayımlanan API Security Top 10 listesi, bu tehditlerin en sık karşılaşılanlarını ortaya koymakta ve güvenli API geliştirme sürecinde yol göstermektedir. Bu çalışma kapsamında, API Security Top 10 senaryolarını içeren Vapi ctf’inin kurulumu ve farklı zafiyet senaryoları incelenmiş, saldırıların nasıl gerçekleştirilebildiği gözlemlenmiş ve her biri için çıkarımlar yapılmıştır.

Yeni başlayan öğrenciler için elimden geldiğince yazıyı basit ve anlaşılır bir şekilde hazırlamaya çalıştım.

KURULUM ADIMLARI

VAPI Nedir?

API’ler, uygulamaların birbirleriyle konuşmasını sağlayan köprülerdir. Günümüzde neredeyse her uygulama API kullanıyor. Bu yüzden güvenlik testlerinde API Pentest oldukça önemli.

VAPI ise güvenlik açıkları içeren, yani özellikle zafiyetli bırakılmış bir API uygulamasıdır. CTF mantığında çalışır ve API pentest pratiği yapmamıza olanak tanır.

VAPI Kurulumu

Adım 1: VAPI’yi indirmek

Öncelikle VAPI’nin GitHub reposunu bilgisayarımıza çekmemiz gerekiyor. Bunun için:

git clone https://github.com/roottusk/vapi

Ben kurulumu Kali Linux üzerinde yaptığım için /var/www/html dizinine gidip bu komutu çalıştırdım.

Adım 2: Docker ile çalıştırmak

İndirme işlemi bittikten sonra klasörün içine giriyoruz ve Docker Compose komutu ile ortamı başlatıyoruz.

docker-compose up

Bu komut ilk seferde eksik kütüphaneleri indirip gerekli güncellemeleri yapar. Sonraki çalıştırmalarda tekrar aynı komutla VAPI’yi başlatabiliriz.

Adım 3: Çalışır hale getirmek

Kurulum tamamlandığında VAPI şu adreste çalışıyor olacak:

https://0.0.0.0:8000/vapi

Postman Kurulumu

API testlerinde en çok kullanılan araçlardan biri Postman’dir. API’lere kolayca istek atmamızı ve sonuçları görmemizi sağlar.

Adım 1: İndirme

Postman resmi sitesinden (www.postman.com) işletim sisteminize uygun sürümü indirin. Ben Kali Linux kullandığım için Linux sürümünü tercih ettim.

Adım 2: Arşivi açmak

İndirdiğimiz dosyanın olduğu klasöre gidip aşağıdaki komutla arşivi açıyoruz:

tar -xzf <indirilen-dosya-adı>

Adım 3: /opt dizinine taşımak

Postman klasörünü sistemde standart olarak kullanılan /opt dizinine taşıyoruz:

mv Postman /opt

Adım 4: Kolay çalıştırma için ayarlamak

Her seferinde terminalden uzun uzun uğraşmamak için kısayol oluşturuyoruz. Bunun için:

Dosya içine gerekli ayarları ekliyoruz (örneğin Exec=/opt/Postman/Postman). Kaydedip çıktığımızda Postman artık menüden kolayca açılabilir hale gelir.

Postman Konfigürasyonu

Collections eklemek

Postman’i açtığınızda sol menüde Collections kısmında VAPI testlerini görebilirsiniz. Eğer görünmüyorsa şu adımı izleyin:

  • File > Import yolunu takip edin.
  • İlk başta klonladığımız VAPI reposundan şu dosyayı seçin:

/vapi/postman/vAPI.postman_collection.json

Böylece VAPI collection Postman’e eklenmiş olur.

Environments ayarı

Her istekte tek tek adres ve değişken yazmak zaman kaybı olur. Bunun yerine Environment ayarı yapabiliriz.

  • Yine File > Import yolunu takip edin.
  • Reponun içindeki şu dosyayı seçin:

/vapi/postman/vAPI_ENV.postman_environment.json

Bu adımlarla VAPI’yi kurmuş ve Postman üzerinde testler için hazırlamış olduk. Artık çözüme geçebiliriz.

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

API1 — BOLA (Broken Object Level Authorization) Zafiyeti

API güvenlik testlerinde en sık karşılaşılan açıkların başında BOLA (Broken Object Level Authorization) gelir. Bu açık, kullanıcıların kendi hesapları dışında başkalarının verilerine erişebilmesine olanak tanır.

Basitçe düşünelim:

Siz bir sosyal medya uygulamasında kendi profilinizi görüyorsunuz. Ancak URL’deki veya API isteğindeki id değerini değiştirerek başka bir kullanıcının bilgilerine de erişebiliyorsanız, işte bu bir BOLA açığıdır.

Şimdi VAPI üzerinde bunu nasıl yakaladığımızı adım adım inceleyelim

Bu API üzerinde üç farklı istek bulunuyor:

POST → Yeni kullanıcı oluşturmak için.

GET → Kullanıcı bilgilerini almak için.

PUT → Kullanıcı bilgilerini güncellemek için.

İlk olarak bir kullanıcı oluşturuyoruz.

Gönderdikten sonra dönen cevapta (response body) kullanıcının sistemde aldığı id değerini görüyoruz.

Bu durumda yeni kullanıcımızın ID’si 5 olmuş oldu.Bir kullanıcı daha oluşturduğumda sistem ona 6 ID’sini verdi.

Artık elimizde ID’ler var. Sol panelden GET isteğini seçip id=5 gönderdiğimizde, sistem bize bu kullanıcıya ait bilgileri getiriyor.

id=6 yapıldığında da 6 numaralı id’ye sahip kullanıcı bilgilerini getiriyor. Yani başka bir kullanıcının ID’sini biliyorsak onun bilgilerine de erişebiliyoruz.

Peki ya sistemdeki diğer kullanıcılar?

id=1, id=2, id=3, id=4 değerlerini denediğimde sistemde daha önce kayıtlı olan bu kullanıcıların bilgilerine de erişebildiğimi gördüm.

Bu noktada BOLA açığının varlığı kesinleşmiş olduYani herhangi bir yetkilendirme kontrolü olmadan, sadece ID değerini değiştirerek farklı kullanıcıların hassas bilgilerine erişim sağlayabiliyoruz.

Bu senaryoda öğrendiğimiz şeyler:

  • BOLA açığı, API güvenliğinde en sık rastlanan zafiyetlerden biridir.
  • Kullanıcıya ait verilerin ID gibi öngörülebilir değerlerle çağrılması, saldırganın diğer kullanıcıların bilgilerini elde etmesine yol açar.

Gerçek dünyada bu tür bir açık, kullanıcı verilerinin ifşa olmasına, hatta daha ileri düzeyde kimlik hırsızlığına kadar gidebilir.

Yorumlar

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir