HTTP Host Header Attack

Host değerini güvenli olmayan bir şekilde işleyen savunmasız web sitelerinde HTTP host başlık saldırıları kullanılır. Sunucu, host başlık bilgisine dolaylı olarak güvenirse ve bunu doğru bir şekilde doğrulayamaz veya çıkış yapamazsa, bir saldırgan bu girdiyi, sunucu tarafı davranışını değiştiren zararlı yükleri enjekte etmek için kullanabilir. Bir yükün doğrudan host başlığına enjekte edilmesini içeren saldırılar, genellikle "http host header attack" saldırıları olarak bilinir. Bir web uygulaması kurarken kurulum sırasında bir yapılandırma dosyasında manuel olarak belirtilmedikçe, genellikle hangi etki alanında (domain'de) dağıtıldıklarını bilmezler. 

Host başlığı aslında kullanıcı tarafından kontrol edilebilir olduğundan, bu uygulama bir dizi soruna yol açabilir. Kullanıcıdan gelen talep düzgün bir şekilde doğrulanmadıysa, host başlığı bir dizi başka güvenlik açığından yararlanmak için kullanılan potansiyel bir vektör olur. Bunlar;

  • Web cache poisoning
  • Belirli işlevlerdeki iş mantığı kusurları
  • Routing-based SSRF
  • SQL enjeksiyonu gibi klasik sunucu tarafı güvenlik açıkları

HTTP host header güvenlik açıkları, genellikle header'ın kullanıcı tarafından kontrol edilebilir olmadığına dair hatalı varsayım nedeniyle ortaya çıkar. Bu, Host başlığında örtük bir güven yaratır ve bir saldırgan Burp Proxy gibi araçları kullanarak bunu kolayca değiştirebilir.

Host header daha güvenli bir şekilde ele alınsa bile, gelen isteklerle ilgilenen sunucuların yapılandırmasına bağlı olarak, host header'ına başka bilgiler eklenerek geçersiz.

Aslında, bu güvenlik açıklarının birçoğu güvenli olmayan kodlamadan değil, ilgili altyapıdaki bir veya daha fazla bileşenin güvenli olmayan yapılandırmasından kaynaklanmaktadır. Bu yapılandırma sorunları, web sitelerinin üçüncü taraf teknolojilerini, yapılandırma seçeneklerini ve bunların güvenlik sonuçlarını mutlaka anlamadan mimarilerine entegre etmesinden kaynaklanmaktadır.

Peki Nasıl Önleriz?

HTTP Host header saldırılarını önlemek için en basit yaklaşım, Host başlığını sunucu tarafı kodunda kullanmaktan kaçınmaktır.

İyi düşünülmüş bir URL yapısı, web sitenizin düzgün çalışması, başarılı bir şekilde taranması ve doğru bir şekilde dizine eklenmesi için kritik öneme sahiptir. Dikkate alınması gereken ana nokta, tüm URL'lerinizi göreli veya mutlak bir tek biçime göre yapılandırmaktır. Absolute URL, bir sayfanın web'deki konumu hakkında mevcut tüm verileri sağlar.

Örneğin: http://www.saygili.org/dokumanlar/pdf/web-security

Protokolün (HTTP) ve etki alanının (www.saygili.org) tüm iç içe yerleştirme düzeylerini izleyebileceğini ve bir web sitesindeki bir sayfanın konumunu öğrenebileceğimizi biliyoruz.

Relative URL,  yalnızca mutlak bir URL'nin etiketini sağlar.

Örneğin "dokumanlar" sayfasından bir "pdf" sayfasına bağlanmak istiyorsanız ve Relative URL'yi kullanırsınız şu şekilde bir bağlantı oluşturursunuz;

<a href=”pdf”>....

Burada belirli bir sayfaya bağlantı görünmektedir. Oluşturulacak linke tıklandığında o sayfayı kök olarak kullanması gerekir.

Absolute URL'ler kullanmanız gerektiğinde, mevcut etki alanının bir yapılandırma dosyasında manuel olarak belirtilmesini ve host başlığı yerine bu değeri kullanmanız gerekir. Bu yaklaşım, örneğin parola sıfırlama zehirlenmesi (password reset poisoning) tehdidini ortadan kaldıracaktır. 

Host başlığını kullanmanız gerekiyorsa, doğru şekilde doğruladığınızdan emin olun. Bu, izin verilen alanların bir white list'e göre kontrol edilmesini ve tanınmayan host bilgileri için herhangi bir isteği reddetmeyi veya yeniden yönlendirmeyi içermelidir. Bu yaklaşım, host header injection saldırılarına maruz kalmanızı azaltacaktır.

Ayrıca bu saldırıları oluşturmak için kullanılabilecek ek başlıkları, özellikle X-Forwarded-Host'u desteklemediğinizi kontrol etmeniz de önemlidir. Varsayılan olarak desteklenebileceğini unutmayınız. 

Yönlendirme tabanlı (Routing-based) saldırıları önlemek için, load balancer veya revers proxy'ye gelen istekleri yalnızca izin verilen domainlerin bulunduğu white list'e iletecek şekilde yapılandırmalısınız.

Bunların dışında virtual hosting kullanırken, yalnızca dahili web sitelerini ve uygulamaları herkese açık içerikle aynı sunucuda barındırmaktan kaçınmalısınız. Aksi takdirde, saldırganlar host başlığını  manipüle ederek dahili etki alanlarına erişebilir.

Hadi durma sende yorum yap

Daha yeni Daha eski

Comments