SSRFSSRF Tehdit Potansiyeli

SSRF zafiyetinin tespit edilmesi, siber güvenlik açısından kritik öneme sahiptir. Bu yazıda, SSRF zafiyetini tespit etmek için izlenebilecek çeşitli yöntemler ele alınacaktır.

SSRF (Server-Side Request Forgery) Nedir?

SSRF, bir saldırganın bir uygulamanın sunucusunu kötüye kullanarak başka sistemlere istek göndermesini sağlayan bir güvenlik açığıdır. Bu saldırılarda, saldırgan doğrudan erişim sağlayamadığı sistemlere, uygulamanın sunucusunu bir köprü gibi kullanarak ulaşır.

SSRF Zafiyetinin Sebepleri

  1. Kullanıcı Girdisinin Yetersiz Doğrulanması
  2. Ağ Seviyesi Koruma Eksikliği
  3. Metadata Servislerine Doğrudan Erişim
  4. Hata Mesajlarının Açığa Çıkması
  5. HTTP İsteklerinin Manipülasyona Açık Olması

SSRF Zafiyetinin Çalışma Prensibi

Çoğunlukla kullanıcıların URL veya IP adresi gibi veriler girmesine olanak tanıyan web uygulamalarındaki özelliklerde ortaya çıkar. Saldırgan, uygulamanın dış kaynaklara istek gönderme işlevini manipüle ederek, hedef sistemin arka planda başka sunuculara veya iç ağdaki servislere istek göndermesini sağlar. Bu tür bir saldırı, saldırganın hedef sistemin güvenlik duvarlarının ötesindeki hassas verilere veya iç servislere erişim sağlamasına yol açabilir.

SSRF Zafiyetinin Güvenlik Riskleri

Dahili Ağ Keşfi (Internal Network Reconnaissance)

SSRF saldırıları, bulut platformlarındaki metadata servislerine erişim sağlayarak API anahtarları ve kimlik bilgileri gibi hassas verilere ulaşılmasına imkan tanıyabilir. Bunun yanı sıra, saldırganlar dahili sistemlere erişim elde ederek veritabanları, yönetim panelleri ve özel API’ler üzerinde yetkisiz işlemler gerçekleştirebilir. Ayrıca, saldırganlar ağdaki diğer sistemler hakkında bilgi toplayarak, bu sistemlere yönelik daha ileri düzey ve karmaşık saldırılar düzenleyebilir.

Yetkilendirme Atlatma (Privilege Escalation)

SSRF saldırısı, bir uygulamanın sahip olduğu yetkileri kullanarak dış sistemlerle iletişim kurmasına imkan tanır. Bu durum, özellikle hassas verilere veya yönetimsel servislere yetkisiz erişim sağlamak amacıyla kötüye kullanılabilir. Örneğin, dahili API’lere erişim elde edilerek müşteri verileri üzerinde değişiklik yapılabilir, veritabanlarına zararlı komutlar gönderilebilir veya yönetim panellerine müdahale edilerek uygulamanın işleyişi bozulabilir. Bu tür saldırılar, uygulamanın güvenlik açığını kullanarak daha geniş bir saldırı vektörüne dönüşebilir, bu da büyük veri ihlalleri veya sistem manipülasyonlarına yol açabilir.

Zincirleme Güvenlik Açıkları

SSRF, başka sistemlerdeki açıkların istismarı için bir aracı olabilir. Örneğin, SSRF ile tetiklenen bir istek, hedef sistemde uzaktan kod çalıştırma (RCE(Remote Code Execution)) gibi daha ciddi bir zafiyete yol açabilir.

Aynı zamanda SSRF; SQL Injection, XSS (Cross-Site Scripting) gibi başka yaygın güvenlik açıklarının istismar edilmesine de zemin hazırlayabilir.

Beyaz Liste (Whitelist)

Kara Liste (Blacklist)

Beyaz liste, yalnızca belirli, güvenilir IP adreslerinin veya DNS adlarının erişimine izin verilen bir yaklaşımdır. Uygulama, yalnızca bu listeye eklenmiş adreslere istek gönderilmesine izin verir. Beyaz liste kullanarak, yalnızca tanımlı ve güvenli kaynaklarla iletişim kurulması sağlanır, bu da SSRF zafiyetini önlemeye yardımcı olur.

Kara liste, belirli IP adresleri veya DNS adları gibi güvenilmeyen kaynakların erişimine engel koyan bir yaklaşımdır. Uygulama, kara listeye eklenmiş adreslere istek göndermez. Ancak, kara liste sadece kötü niyetli adreslerin engellenmesini hedefler ve bu yöntem, bypass edilmesi mümkün olabilen bir güvenlik açığı oluşturabilir. Yani, saldırganlar kara listeyi aşmak için farklı yöntemler kullanabilirler.

Basit kara liste ve düzenli ifadeler SSRF zafiyetini engellemek için yetersizdir ve bypass edilebilir. Bu riski azaltmak için wildcard DNS çözümlerine karşı IP blokajı yapılmalıdır.

Wildcard DNS, tüm alt alan adlarını kapsayan genel bir DNS kaydını ifade eder (örneğin, *.example.com). Bu tür bir DNS çözümü, saldırganların farklı alt alan adlarını kullanarak güvenlik önlemlerini atlatmasına olanak tanıyabilir. Bu riski azaltmak için, wildcard DNS çözümlerine karşı IP adresi blokajı yapılması önerilir. Yani, uygulama sadece belirli IP adreslerinden gelen istekleri kabul etmeli ve wildcard (yıldız işaretiyle) gibi genel DNS çözümleri üzerinden gelen istekleri engellemelidir. Böylece, potansiyel saldırganların çeşitli DNS alt alan adları üzerinden zararlı istekler göndermesi engellenmiş olur.

Web Uygulamalarındaki SSRF Zafiyetlerini Tespit Etmek

Kullanıcı Girdi Alanlarının İncelenmesi

SSRF zafiyetinin tespiti için ilk adım, uygulamanın kullanıcıdan aldığı URL, IP adresi veya diğer ağ bilgilerini içeren alanların incelenmesidir. Bu tür parametreler, genellikle SSRF saldırılarının hedefidir. Özellikle form alanları, API parametreleri veya URL parametreleri, saldırganların uygulamanın sunucu yetkilerini kötüye kullanmasına olanak tanıyabilir. Uygulamanın, kullanıcılardan ağla ilgili bilgileri (örneğin, URL’ler veya IP adresleri) topladığı yerler dikkatlice gözden geçirilmelidir. Bu tür parametreler, dışa yönelik istekler gönderebildiğinden, potansiyel SSRF zafiyetlerinin başlangıç noktası olabilir.

HTTP Yanıtlarının ve Hata Mesajlarının İncelenmesi

Uygulamanın, kullanıcıdan aldığı istekler doğrultusunda verdiği HTTP yanıtları dikkatle izlenmelidir. SSRF zafiyetlerini tespit etmek için, gelen yanıtların içeriği ve hata mesajları incelenmelidir. Özellikle hata mesajları, sunucunun iç yapısını (örneğin, dahili IP adreslerini veya iç hizmetlerini) ortaya çıkarabilir. Eğer bir uygulama hata mesajlarında, dahili servislere ait bilgileri, port numaralarını veya ağ yapılarını ifşa ediyorsa, bu durum SSRF zafiyetinin bir göstergesi olabilir. Ayrıca, uygulamanın verdiği hata mesajlarından hangi iç servislere erişim sağlandığına dair bilgiler edinilebilir. Web uygulamasında HTTP veya HTTPS kullanılmasına izin veriliyorsa, yalnızca bu URL şemalarına izin vererek uygulamanın güvenliğini artırabilirsiniz.

Port Tarama Yapma

Uygulamanın dışa yaptığı isteklerin yalnızca belirli portlara mı yoksa tüm ağ portlarına mı yönlendirildiğini test etmek önemlidir. URL veya IP adresi parametreleri aracılığıyla, uygulamanın belirli portlara istek gönderip göndermediği kontrol edilebilir. Örneğin, http://localhost:8091 gibi bir URL girilerek, uygulamanın yerel veritabanı portlarına istek yapıp yapmadığı test edilebilir. Eğer uygulama bu tür portlara başarılı bir şekilde istek gönderiyorsa, SSRF zafiyetinin mevcut olduğunu gösterir.

Metadata Servislerine Erişim Testi

SSRF zafiyetinin tespit edilmesinde, bulut altyapılarında çalışan uygulamalar için metadata servislerine erişim önemli bir göstergedir. AWS, Google Cloud ve Azure gibi bulut platformlarında, metadata servisine erişim sağlamak için belirli IP adreslerine istek gönderilebilir. Örneğin, AWS ortamlarında, http://169.254.169.254 IP adresine yapılan istekler, metadata servislerine erişim sağlar. Eğer uygulama bu IP adresine istek gönderebiliyorsa, bu SSRF zafiyetinin bulunduğunu gösterir. Otomatik Araçlar Kullanma

SSRF zafiyetlerini tespit etmek için otomatik güvenlik test araçları da etkili bir yöntemdir. Burp Suite, OWASP ZAP, Nikto gibi araçlar, SSRF zafiyetlerini tespit etmek için URL manipülasyonu yapabilir ve olası zafiyetleri işaret edebilir. Bu araçlar, farklı URL şemaları, portlar ve protokoller üzerinde otomatik testler yaparak, SSRF açıklarını belirlemenize yardımcı olabilir. Ayrıca, Netsparker gibi web uygulama güvenlik tarayıcıları, SSRF ve Out-of-Band (OOB) zafiyetlerini tespit edebilir ve güvenlik açıklarını raporlayabilir.

İzleme ve Logları İnceleme

Uygulamanın sunucusunda yapılan ağ isteklerini ve erişim günlüklerini (loglarını) incelemek, şüpheli etkinlikleri tespit etmek için faydalıdır. Eğer bir uygulama iç ağdaki bir servise istek gönderiyorsa, bu durum SSRF zafiyetinin bir göstergesi olabilir. Ağ trafiği analizi yaparak, uygulamanın iç ağlarla olan bağlantılarını incelemek, potansiyel zafiyetleri keşfetmeye yardımcı olabilir. Sunucu logları, özellikle dahili ağ servislere yapılan isteklerin izlenmesine olanak tanır ve zafiyetin tespit edilmesine katkı sağlar.

LAB

SSRF saldırılarında, farklı yöntemlerle erişim sağlamak için kullanılabilecek çeşitli “atlatma” (bypass) teknikleri ortaya konmuştur.

1.Adım:

Hesap oluşturulduktan sonra, https://<IP_Address>.p.thmlabs.com/customers/new-account-page URL’ye gidilir.

2.Adım:

Avatar formunun sayfa kaynağını görüntülenir ve avatar formu alan değerin görüntünün yolunu içerdiği görülür.

3.Adım:

Web sayfasından yeni bir avatar seçip güncelleme yapmaktır. Bu işlemden sonra tekrar sayfa kaynağı görüntülenir.

“base64” kodlamasının kullanıldığı büyük miktarda bilgi görülmektedir ve ayrıca görüntünün PNG formatında olduğu da tespit edilmiştir.

4.Adım:

Web sayfasına geri dönülür. Özel sunucunun kaynağa erişmesini ve IP adres bloğunu geçmesini umarak avatar değeri değiştirilir.

 

Avatar güncellenir ve bu sefer “sayfa kaynağı” yerine “incele” seçeneğine bakılır.

Bu web uygulamasının, /private uç noktasına erişimi engelleyen bir “Kara Liste”ye sahip olması nedeniyle bir “hata” oluşmuş gibi görünüyor.

5.Adım:

Yönergelere göre, araştırılabilecek başka bir teknik daha vardır ve bu, “Dizin Geçişi” (Directory Traversal) yöntemidir. Bu yöntem, hata alınan aynı metodu kullanarak “değer” yolu dosya bilgisini “private” olarak değiştirmek suretiyle potansiyel olarak bu engeli “atlatabilir”. Ancak bu sefer, yol “x/../private” şeklinde olacaktır.

“value” değeri düzenlenerek istenilen avatar seçilir, ardından güncelleme işlemi yapılır ve tekrar “sayfa kaynağına” ancak /private sayfasına bakılır.

Web sunucusu, x/../private isteğini aldığında, “nokta nokta eğik çizgi (../)” ifadesinin bir dizin yukarı çıkmayı ifade ettiğini anlar ve isteği sadece /private olarak dönüştürür.

“Base64” değeri ortaya çıkmış olacaktır.

SSRF zafiyeti, sadece dışa yapılan isteklerin kötüye kullanılmasıyla sınırlı bir güvenlik açığı değildir. Bu zafiyet, çok daha geniş ve ciddi sonuçlar doğurabilir. Saldırganlar, SSRF açığını kullanarak iç ağlara sızabilir, hassas verilere erişebilir ve daha büyük güvenlik açıklarını tetikleyebilecek diğer zafiyetlere yol açabilir. Bu nedenle, SSRF’nin önlenmesi ve tespiti, uygulama güvenliğinin kritik bir unsuru olmalıdır. Uygulamalarda kullanıcı girdilerinin doğru şekilde doğrulanması, ağ erişimlerinin kısıtlanması ve hata mesajlarının dikkatli bir şekilde yönetilmesi gibi önlemler, SSRF saldırılarının riskini azaltmada etkili olabilir.

Daha fazla bilgi ve PoC için bizimle iletişime geçebilirsiniz.

İlgili Yazılar

WAF (Web Application Firewall)

Yazar:Emine Zeynep BULAK

Günümüzün aşırı bağlantılı dünyasında, web uygulamaları işletmelerden bireysel kullanıcılara kadar herkes için büyük önem taşır. Çevrimiçi bankacılık, e-ticaret...

Cyber Kill Chain

Yazar: BERAT KOLAY

Siber saldırıları analiz edebilmek amacıyla çeşitli modellerden birisi olan ve Locheed Martin firması tarafından geliştirilen cyber kill chain...
Blockchain Test, Blockchain Technology Test

Blokchain Nedir?

Yazar: Ayşenur Karabulut

Blockchain, bir bilgisayar ağının düğümleri arasında paylaşılan dağıtılmış bir veritabanı veya defterdir. Kripto para sistemlerindeki önemli rolleriyle, güvenli...