August 22, 2026
SSRF Zaafiyeti ve Çözümleri
Normal bir web sayfasının kullanıcıya veri yansıtmak için izlediği şema kısaca böyledir.
By karincayiyen
4 min read
Buna örnek vermek gerekirse.
check stock butonuna basılınca şöyle bir istek görürüz
burda product/stock/check endpointinden çektiği veriyi bize yansıtır (815)
SSRF zafiyetinin başlangıç noktası ise bu stockApi'ın kontrol ettiği urlde yapılan değisikliği fark edememesi ve ona verilen her türlü URL'ye istek atması ve onu güvenli saymasıdır.
Kısaca:
Eğer bu isteği isteğimiz URL'ye gönderirsek başarılı sonuç alırız.
SSRF ise temelde bu açığı kullanır yani istek gönderilen URL'deki veriyi bize yansıtır verdiğim örnekte bir stock kontrol yoluydu o yola giderek ordan kalan stock durumunu kontrol ediyor ve bize sonucu veriyor.
PORT SWİGGER LABLARI;
Lab: Basic SSRF against the local server
Burp ile veriyi çekiyoruz.
Burda zafiyetli kısım stockApi bize stock durumunu gösteren veri burdan çekiliyor http://stock.weliketoshop.net:8080/product/stock/check?productId=1&storeId=1
Ve stockApi'ya sunucunun kendi localhostundan veri çekmesini istiyoruz ve çalışıyor teoride artık sunucunun local'ine erişimimiz oluyor istersek admin oluruz istersek sunucuyla oynayabiliriz yetki bizde fakat bizden istenen carlos adlı kullanıcıyı silmemiz
Ve
Burda sunucunun içine bizzat kendine bir istekte bulunduk http://localhost ile ve sunucu kendi localhostundan veri çekti ve bize yansıttı bu bizim localhostumuz değil aksine sunucunun kendi localhostundaki veri karıştırmayın.
Lab: Basic SSRF against another back-end system
Orijinal istek bu şekilde
Direk admine atılan istek "Missing parameter" alıyor bu cevap bize ip'mizin veya port'umuzun yanlış veya eksik olduğunu gösteriyor fakat zaten
bize verilen bilgide portun 8080 ip'nin ise 192.168.0.X yani bizden X i bulmamız isteniyor yani kısaca admin path'inin nerde olduğunu bulacağız bunu ben FFUF ile yapacam isterseniz burp ıntruder ile de yapabilirsiniz fakat eğer Professional yoksa çok yavaş olur Professional çok pahalı.
192.168.0.235:8080 de çalışıyormuş ve deniyoruz.
Çalıştı simdi tekrar carlos'u siliyoruz.
Ve
Not: İp sizde değişiklik gösterebilir kopyala yapıştır çalışmayabilir adımları tekrarlayın.
Lab: Blind SSRF with out-of-band detection
View detailse gidip veriyi burpte yakalıyoruz
burda amaç Referer ile oynamak ve buraya atılan isteği kendi sitemize yönlendirmek bunu ister burp collabarator ile yapabilirsiniz Professional varsa Professional çok pahalı ben webhook kullanacağım .
Normalde çalışması gerekiyor fakat burp collaborator dışındakı yerlere isteği kapatmışlar sanırım ve istek hiç bi şekilde gelmiyor Professional yoksa yapamıyosunuz ama collaborator ile yaptımızı düşünürsek böyle bir veri gelecekti ve lab çözülcekti.
Burdaki olay Blind SSRF bizim ekranımıza bir veri yansımıyor fakat Referer verdiğimiz siteye gelen istekleri incelediğimizde sonucu görüyoruz. Sunucu bizim sitemize HTTP isteği atar kısaca.
Lab: SSRF with blacklist-based input filter
yine check stock ile isteği burpte yakalıyoruz
İlk başta çözdüğümüz lablara benziyor fakat onlardan farklı burda stockApi'ya verilen bazi girdileri blackliste alıyor örneğin;
burda 127.0.0.1 engellenmis farklı birşey deneyelim;
localhost'ta engellenmiş burda gerçekçi senaryoda en mantıklı şey bir araç aracılığı ile bütün seçenekleri denemek ama ben zaten doğru domain'i bildiğim için denemicem .
şimdi ise admine gidip carlos'u silmeye çalışalım.
admin kelimesi black liste olduğu için yazamiyoruz ve encode etmemiz lazım .
Çalışıyor
ve labı çözüyoruz
devamı gelecek