Skip to content

Files

Latest commit

8a7b925 · Feb 17, 2025

History

History
101 lines (81 loc) · 4.52 KB

15.md

File metadata and controls

101 lines (81 loc) · 4.52 KB

Server-Side Request Forgery (SSRF)

SSRF, bir sunucunun saldırgan tarafından kontrol edilen istekleri gerçekleştirmesini sağlayan bir güvenlik açığıdır. Bu açık, uygulamanın harici kaynaklara erişim yeteneğini kötüye kullanarak iç ağlara, yerel dosyalara veya hassas hizmetlere yetkisiz erişim sağlar.


Nasıl Çalışır?

  1. Temel Senaryo:

    • Kullanıcıdan bir URL alan bir web uygulaması (örn., resim indirme, veri çekme).
    • Saldırgan, http://localhost/admin veya http://169.254.169.254/latest/meta-data/ gibi bir URL gönderir.
    • Sunucu bu URL'yi işler ve saldırgana yasaklı kaynakları sızdırır.

    Örnek Kod (Zafiyetli):

    // Kullanıcıdan alınan URL'yi doğrulamadan işler
    $url = $_GET['url'];
    $data = file_get_contents($url);
    echo $data;
  2. Adım Adım Saldırı:

    • Adım 1: Saldırgan, url=http://internal-api:8080 parametresini kullanarak bir HTTP isteği gönderir.
    • Adım 2: Sunucu, iç ağdaki internal-api:8080 hizmetine bağlanır ve yanıtı saldırgana döndürür.
    • Adım 3: Saldırgan, iç API'den alınan hassas verileri (örn., veritabanı şifreleri) elde eder.

SSRF Türleri

  1. Temel SSRF:

    • Sunucunun yanıtı saldırgana görünür (örn., dosya içeriği veya API yanıtı).
  2. Blind SSRF:

    • Yanıt görünmez, ancak sunucu arka planda isteği gerçekleştirir (örn., iç ağda port tarama).
  3. DNS Rebinding ile SSRF:

    • Saldırgan, DNS kaydını hızlıca değiştirerek sunucunun farklı bir IP'ye istek göndermesini sağlar.
    • Örnek: İlk DNS sorgusu evil.com → 1.2.3.4, ardından evil.com → 169.254.169.254 olarak değişir.

Etkileri ve Riskler

  1. İç Ağa Erişim:
    • Dahili API'ler, veritabanları veya yönetim panelleri ele geçirilebilir.
  2. Bulut Metadata Sızıntısı:
    • AWS/Azure/GCP metadata API'leri (169.254.169.254) üzerinden IAM kimlik bilgileri çalınabilir.
  3. Dosya Okuma:
    • file:///etc/passwd gibi URL'lerle sunucudaki dosyalar okunabilir.
  4. Servis Sahtekarlığı:
    • Sunucu, saldırganın kontrol ettiği bir hizmete istek göndererek kimlik doğrulama token'larını sızdırabilir.

Tespit Yöntemleri

  1. Manuel Test:
    • URL parametrelerine localhost, 127.0.0.1 veya metadata IP'leri girip yanıtı gözlemleme.
  2. Araç Kullanımı:
    • Burp Suite: Collaborator modülüyle blind SSRF tespiti.
    • SSRFmap: Otomatik tarama ve exploit (örnek komut: python3 ssrfmap.py -u http://target.com?url=SSRFHERE).
  3. Protokol Denemeleri:
    • dict://, gopher://, ftp:// gibi alternatif protokolleri test etme.

Önleme ve Mitigasyon

  1. Girdi Doğrulama:
    • Whitelist: Yalnızca izin verilen domain/IP'leri kabul et (örn., ^https://(www\.)?example\.com/.*).
    • URL Scheme Kısıtlaması: http:// ve https:// dışındaki protokolleri engelle.
  2. Ağ Katmanı Önlemleri:
    • Sunucuyu iç ağ kaynaklarına erişimden kısıtla (firewall kuralları).
    • Metadata API'lerine erişimi engelle (AWS'de IMDSv2 kullanımı zorunlu hale getirme).
  3. Güvenli Kodlama:
    // Whitelist örneği
    $allowed_domains = ['example.com', 'trusted.org'];
    $url = parse_url($_GET['url']);
    if (!in_array($url['host'], $allowed_domains)) {
        die("Geçersiz URL!");
    }
  4. DNS Rebinding Koruması:
    • DNS çözümlemesi yapıldıktan sonra IP'nin whitelist'te olduğunu tekrar kontrol et.

Zorluklar ve Çözümler

  • Zorluk 1: Karmaşık uygulamalarda whitelist yönetimi zordur.
    • Çözüm: Reverse proxy kullanarak yalnızca belirli endpoint'lere izin ver.
  • Zorluk 2: Legacy sistemlerde ağ kısıtlamaları uygulanamayabilir.
    • Çözüm: Mikro-segmentasyon ile kritik kaynakları izole et.

Gerçek Dünya Örnekleri

  1. Capital One Veri İhlali (2019):
    • SSRF kullanılarak AWS metadata API'sinden IAM rolü çalındı ve 100M+ müşteri verisi sızdırıldı.
  2. GitLab SSRF Zafiyeti (CVE-2021-22214):
    • Webhook entegrasyonunda SSRF ile iç ağ taraması yapılabiliyordu.

Özet

SSRF, sunucuların güvenilmeyen kaynaklara erişimini kısıtlamayan uygulamalarda ortaya çıkar. Whitelist tabanlı doğrulama, ağ izolasyonu ve metadata korumasıyla riskler büyük ölçüde azaltılabilir. Test araçları ve güvenli kodlama en iyi uygulamaları benimsenmelidir.