SSRF (Server Side Request Forgery)
Yine bir senaryo ile anlatalım, bir web sayfasında site adresini giriyoruz bu web sayfası bize aradığımız adresi getiriyor. Bu web sayfasının kodu curl fonksiyonu ile çalışıyor olsun. Curl fonksiyonu kendisine gelen adresi kontrol etmeden bulup kullanıcıya veriyor. Kullanıcı bu sayfanın bulunduğu sunucuya istek yapıyor, sunucuda curl fonksiyonu ile başka bir sunucuya istek yapıyor. Burada kullanıcı saldırgan olabilir ve sunucu içerisinden dosya çağırabilir. Örneğin,
adresbulansayfa.php?path=localhost :22
şeklinde bir istekle sunucuda ssh bağlantısı kurabilir. Sunucunun diğer portlarına ulaşabilir.
Daha somutlaştırmak için Facebook’ta paylaştığınız bağlantıları düşünün. Siz facebook sunucusuna istek yapıp Facebook hesabınıza erişiyorsunuz. Sonrasında bir bağlanı paylaşmak için link yapıştırıyorsunuz. Facebook sunucusu bu bağlantıya erişmek için adresin bulunduğu sunucuya istek yapıyor.
SSRF Saldırılarından Nasıl Korunabiliriz?
HEAD methotu ile istenen bağlantı adresindeki dosyanın büyüklüğü kontrol edilebilir. Keep-Alive header bilgisi ile dosyanın yüklenme süresi kontrol altında tutulabilir. İzole sunucu kullanılabilir. Whitelist ile izinler listelenebilir. İstenilen dosyaların uzantıları kontrol edilebilir.