SSRF Nedir?
Server-Side Request Forgery (SSRF), saldırganların web uygulamasını barındıran sunucuyu kullanarak sunucunun erişebildiği internal veya external kaynaklara istek göndermesine olanak tanıyan bir güvenlik zafiyetidir. Bu zafiyet internal network keşfi, cloud metadata erişimi ve hatta remote code execution'a kadar yükseltilebilir.
SSRF Nasıl Çalışır
SSRF, bir uygulama kullanıcı tarafından sağlanan URL'yi doğrulamadan uzak kaynakları getirdiğinde meydana gelir. Saldırganlar URL'yi manipüle ederek sunucunun internal servislere, cloud metadata endpoint'lerine (AWS/GCP/Azure) erişmesini sağlayabilir veya port taraması yapabilir.
❌ Güvensiz Kod Örneği
1// PHP - Unsafe URL fetch2$url = $_GET['url'];3$content = file_get_contents($url);4echo $content;56// Attacker input:7// url=http://169.254.169.254/latest/meta-data/iam/security-credentials/8// Server fetches AWS credentials!✅ Güvenli Kod
1// PHP - URL allowlist validation2$url = $_GET['url'];3$allowed = ['api.example.com'];4$host = parse_url($url, PHP_URL_HOST);5if (in_array($host, $allowed)) {6 $content = file_get_contents($url);7 echo $content;8} else {9 die("Invalid URL");10}SSRF Saldırı Türleri
Sunucu taraflı istekler aracılığıyla dahili ağ kaynaklarına ve servislerine erişim
AWS, GCP veya Azure metadata endpoint'lerinden kimlik bilgilerini alma
Görünür yanıt yok; zamanlama analizi veya bant dışı geri çağırmalar yoluyla tespit
Kodlama, DNS yeniden bağlama veya açık yönlendirmeler kullanarak URL filtrelerini atlama
Redis, Memcached veya dahili servis istismarı yoluyla RCE'ye yükseltme
Ne Olabilir?
- 🔍Dahili Ağ Erişimi:
Güvenlik duvarlarının arkasındaki dahili servisleri, veritabanlarını, admin panellerini tarama ve erişim
- ☁️Cloud Kimlik Bilgisi Hırsızlığı:
Metadata endpoint'lerinden AWS IAM kimlik bilgilerini, GCP token'larını, Azure erişim token'larını çalma
- 🔓Güvenlik Duvarı Atlatma:
Ağ kısıtlamalarını atlama, ulaşılmaması gereken servislere erişim
- 🔥Uzaktan Kod Çalıştırma:
RCE için gopher:// protokolü aracılığıyla dahili servisleri (Redis, Memcached) istismar etme
SSRF Nasıl Önlenir
- ✓URL İzin Listesi: Yalnızca belirli, güvenilir domain'lere ve IP'lere isteklere izin verin
- ✓Özel IP'leri Engelleyin: localhost, 127.0.0.1, 169.254.x.x ve RFC1918 aralıklarına yönelik istekleri reddedin
- ✓Tehlikeli Protokolleri Devre Dışı Bırakın: file://, gopher://, dict:// ve diğer HTTP olmayan protokolleri engelleyin
- ✓Ağ Segmentasyonu: Uygulama sunucularını dahili ağlardan izole edin
- ✓Cloud Metadata Koruması: IMDSv2 (AWS) kullanın, header'lar gerektirin (GCP), ağ kontrolleri uygulayın
- ✓Yanıt Doğrulaması: Ham yanıtları kullanıcılara döndürmeyin, içerik tiplerini doğrulayın