PortSwigger Server-side request forgery (SSRF)
Server-side request forgery (SSRF), saldırganın sunucu tarafından istenmeyen lokasyonlara istek yapmasına neden olan bir güvenlik zafiyetidir. Bir SSRF saldırısında saldırgan, sunucunun yalnızca dahili hizmetlere bağlantı kurmasına neden olabilir. Diğer durumlarda, sunucuyu isteğe bağlı olarak harici sistemlere bağlanmaya zorlayabilir ve potansiyel olarak kimlik bilgileri gibi hassas verileri sızdırabilir.
Lab 1 Lab 2 Lab 3 Lab 4 Lab 5 Lab 6 Lab 7
Lab-1 Basic SSRF against the local server
Bu laboratuvardadaki stock check fonksiyonu dahili sistemden veri almaktadır. Lab’ın tamamlanması için stock check URL’in değiştirip admin arayüzüne bağlanarak Carlos kullanıcısının silinmesi gerekmektedir.
Stock Check fonksiyonu incelendiğinde “stockApi” değişkeninde bir url gönderilmektedir.
Tespit edilen url carlos kullanıcısının silinmesi için manipüle edilerek sunucuya gönderilmektedir.
Lab-2 Basic SSRF against another back-end system
Bu laboratuvardaki stock check fonksiyonu iç sistemden veri almaktadır. Lab’ın tamamlanması için stock check fonksiyonu kullanılarak 192.168.0.x iç ağı taranmalı ve admin arayüzünün bulunduğu 8080 portuna bağlanılarak carlos kullanıcısı silinmelidir.
Stock Check requesti iç ağ taraması yapmak için intruder aracına gönderilmektedir.
192.168.1.107 ip’sinin ayakta olduğu tespit edilmiştir.
İlgili ip bilgisinde bulunan admin arayüzüne erişerek carlos kullanıcısı silinmektedir.
Lab-3 SSRF with blacklist-based input filter
Bu laboratuvarda bulunan stock check fonksiyonu iç ağıdan veri çekmektedir. Lab’ın tamamlanması için stock check URL değerinin değiştirilerek carlos kullanıcısının silinmesi gerekmektedir. Ancak uygulama zayif bir anti-SSRF savunmasına sahiptir.
Localhost veya 127.0.0.1 adreslerine gitmeyi denediğimizde sunucunun engellediği gözlemlenmiştir.
Engelleme işlemi güçlü olmadığından 127.1 ile atlatılabilmektedir. Ayrıca admin ismi de blacklist de bulunduğundan “a” harfi veya tüm “admin” ismi double-url encoding ile işlenip sunucuya gönderildiğinde carlos kullanıcısı silinebilmektedir..
Lab-4 SSRF with filter bypass via open redirection vulnerability
Bu laboratuvardaki stock check fonksiyonu iç ağdan veri çekmektedir. Lab’ın tamamlanması için stock check url değerinin değiştirilip carlos kullanıcısının silinmesi gerekmektedir. Stock check fonksiyonu sadece local erişim ile sınırlandırılmıştır. Bu nedenle önce bir open redirection tespit edilmesi gerekmektedir.
Next Product bağlantısında bir open redirection zafiyeti tespit edilmiştir.
Stock Check fonksiyonu sadece local uygulamanın erişiminde olduğu için uygulamadan bulunan redirect fonksiyonu kullanılarak carlos kullanıcısı silinmiştir.
Lab-5 Blind SSRF with out-of-band detection
Bu laboratuvarda bir ürün sayfası yüklendiğinde Referere başlığında belirtilen URL’i getiren analiz yazılımını kullanmaktadır. Lab’ın tamamlanması için Burp Collaborator sunucusuna HTTP requesti gerçekleştirilmesi gerekmektedir.
Uygulamada bir ürüne erişmek istediğimizde oluşan request’teki Referere başlığı Burp Collaborator bilgisi ile değiştirilip sunucuya gönderilmektedir.
Daha sonrasında collaborator incelendiğinde HTTP requestleri gözlemlenmektedir.
Lab-6 SSRF with whitelist-based input filter
Bu laboratuvardaki stock check fonksiyonu iç ağdan veri çekmektedir. Lab’ın tamamlanması için stock check URL’i değiştirilerek carlos kullanıcısının silinmesi gerekmektedir. Uygulamada anti-SSRF savunması bulunmaktadır.
grkm@stock. olarak url değiştirildiğinde uygulama kabul etmektedir. URL parser’in embedded credentials kabul etmektedir.
username bilgisinden sonra “#” karakteri ekleyip requesti gönderdiğimizde uygulamanin whitelisti tarafından yakalanıp izin verilmedigi gözlemlenmektedir. Ancak double-url encoding işlemi gerçekleştirip gönderildiğinde whitelist bypass edilmektedir.
localhost:80 ifadesini parser kullanıcı adı parola olarak algılamaktadır ve “stock.weliketoshop” ifadesini domain olarak tanımlamaktadır. Böylelikle whitlelist bypass edilmektedir. Daha sonra double-url encoding işlemi uygulanan ”#” karakteri işin içine girdiğinde uygulama bundan sonrasını location hash olarak algılamaktadır ve domain’i localhost olarak değerlendirmektedir.
Lab-7 Blind SSRF with Shellshock exploitation
Bu laboratuvarda ürün sayfası yenilendiğinde referer header’ı URL’i getiren analiz yazılımını kullanmaktadır. Lab’ın tamamlanması için blind SSRF kullanılarak OS user bilgisi elde edilmelidir.
Ürün listelemek için kullanılan request yakalanmaktadır. User-Agent header’ı Shellshock payloadı ve burp collaborator id verisi ile değiştirilmektedir. Daha sonrasında Referer bilgisi 192.168.0.X verisi ile değiştirilerek intruder yardımıyla tarama yapılmaktadır.
Collaborator incelendiğinde hedef sunucudan bize bir request yapılmıştır. Yapılan requestin içeriğinde ise bir kullanıcı adı bulunmaktadır.