Host Header Injection Nedir?
Host Header Attack olarak da bilinen Host Header Injection, HTTP başlıklarından bir tanesi olan “Host” başlığının manipüle edilmesiyle gerçekleştirilen bir saldırı türüdür. Web uygulamalarına istekte bulunurken, kullanılan Host başlığı saldırgana ait bir adres ile değiştiştirilmesi durumunda account takeover (hesap devralma) gibi durumlar ortaya çıkabilmektedir.
Host Header Injection Zafiyeti Nasıl Tespit Edilir?
Bir web uygulamasında host header injection zafiyetini tespit edebilmek için OWASP’da da yer alan şu adımları deneyebilirsiniz:
- Gönderilen istekteki “Host: domain.com” ifadesi “Host: evil.com” şeklinde manipüle edilip gönderildiğinde web uygulaması 200 OK dönüyorsa zafiyetin varlığı söz konusudur. Bir örnek ile açıklamak gerekirse;
Normal İstek:
POST /sayfa
Host: www.website.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://www.website.com
Origin: https://www.website.com
Alt-Used: www.google.com
Connection: keep-alive
Cookie: 1P_JAR=2021-07-29-20; NID=220=M5Mq4asdasdkA1F3NYIjbczSAD-huTx6zcB0SttHt0Z8Xasdagadsgdsfadasdi4dWaG_Y1e6t2hoJgCbZ37shEeXYK6cAWNZiymLAGa66XjGkOXyJ8ZuV-aL2rwpmoRJqmDsUzL9LSXDq_5k0de-Ns
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: same-origin
Content-Length: 0
Manipüle Edilmiş İstek:
POST /sayfa
Host: www.evil.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://www.website.com
Origin: https://www.website.com
Alt-Used: www.google.com
Connection: keep-alive
Cookie: 1P_JAR=2021-07-29-20; NID=220=M5Mq4asdasdkA1F3NYIjbczSAD-huTx6zcB0SttHt0Z8Xasdagadsgdsfadasdi4dWaG_Y1e6t2hoJgCbZ37shEeXYK6cAWNZiymLAGa66XjGkOXyJ8ZuV-aL2rwpmoRJqmDsUzL9LSXDq_5k0de-Ns
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: same-origin
Content-Length: 0
- Gönderilen isteğe “X-Forwarded-Host: evil.com” eklendiğinde web uygulama 200 OK dönüyorsa Host Header Injection zafiyetinin varlığı söz konusudur.
Normal İstek:
POST /sayfa
Host: www.website.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://www.website.com
Origin: https://www.website.com
Alt-Used: www.google.com
Connection: keep-alive
Cookie: 1P_JAR=2021-07-29-20; NID=220=M5Mq4asdasdkA1F3NYIjbczSAD-huTx6zcB0SttHt0Z8Xasdagadsgdsfadasdi4dWaG_Y1e6t2hoJgCbZ37shEeXYK6cAWNZiymLAGa66XjGkOXyJ8ZuV-aL2rwpmoRJqmDsUzL9LSXDq_5k0de-Ns
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: same-origin
Content-Length: 0
Manipüle Edilmiş İstek:
POST /sayfa
Host: www.website.com
X-Forwarded-Host: www.evil.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://www.website.com
Origin: https://www.website.com
Alt-Used: www.google.com
Connection: keep-alive
Cookie: 1P_JAR=2021-07-29-20; NID=220=M5Mq4asdasdkA1F3NYIjbczSAD-huTx6zcB0SttHt0Z8Xasdagadsgdsfadasdi4dWaG_Y1e6t2hoJgCbZ37shEeXYK6cAWNZiymLAGa66XjGkOXyJ8ZuV-aL2rwpmoRJqmDsUzL9LSXDq_5k0de-Ns
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: same-origin
Content-Length: 0
Host Header Injection Zafiyeti Nasıl Giderilir? – Önlemler
- Nginx ve Apache için sayfaya gelen istek direkt sisteme alınmadan sanal bir host üzerinde kontrol edilmelidir. Host ve X-Forwarded-Host başlıklarının güvenilir kaynaklar olduğundan emin olmalıdır.
- Kullanıcıdan alınan girdiler filtrelenmelidir.
Host Header Injection Zafiyetinin Etkileri Neler Olabilir?
Host Header Injection zafiyeti yazımızın başında da bahsettiğim gibi hesap devralmaya kadar ilerleyebilen bir güvenlik açığıdır. Eğer saldırgan bir sunucu ayağa kaldırır ve hedef uygulamaya gönderdiği Host HTTP başlığını manipüle etmeyi başarabilirse diğer kullanıcalara ait parola sıfırlama token’larını ele geçirebilir.
Bu zafiyetin yanında, Güvensiz Doğrudan Nesne Referansı (IDOR) zafiyeti de hesap devralmaya neden olabilen yüksek seviye bir güvenlik zafiyetidir.