Bloga geri dön
Host Header Injection zafiyetinin ortaya çıkmasındaki en büyük sebep, Host başlık bilgisinin manipüle edilemeyeceği düşüncesidir. Host başlık bilgisi, gün sonunda HTTP isteğinde yer alan bir kullanıcı girdisi olduğu için buradan gelen veriye güvenilmesi ve kontrol edilmeden işletilmesi durumunda bu zafiyetin varlığından söz ediyor olacağız.
Uygulamamız üzerinde, bazı işlemler gerçekleştirirken host bilgisine ihtiyaç duyabiliriz. Örneğin, parola sıfırlama fonksiyonunda kullanıcı için bir parola sıfırlama bağlantısı oluşturduğumuzu düşünelim. İlgili kullanıcıya ait bir token oluşturuyoruz ve bu token'ı bağlantımıza ekleyerek, kullanıcıya mail gönderiyoruz.
POST /password-reset HTTP/1.1
Host: example.com
…
email=test@example.com
Mail'de gelen bağlantı: https://example.com/password-reset?token=TOKEN_DEGERI
Kullanıcı, mailden gelen bağlantıyı ziyaret ederek parolasını değiştiriyor. Eğer bu akışta, kullanıcıdan gelen "Host" başlık bilgisine güveniliyorsa, saldırgan hedeflediği kişi için parola sıfırlama işlemi yaparken kendi kontrolünde olan sunucuyu "Host" başlığı üzerinden gönderdiğinde parola sıfırlama bağlantısının, kendi gönderdiği adres ile oluşmasını sağlayabilir.
POST /password-reset HTTP/1.1
Host: hacker.com
…
email=test@example.com
Mail'de gelen bağlantı: https://hacker.com/password-reset?token=TOKEN_DEGERI
Maili alan kullanıcının, gelen bağlantıyı ziyaret etmesi durumunda parola sıfırlaması için kullanacağı token bilgisi, saldırganın eline geçecektir.
Örneğin:
Absolute URL: <a href = "https://www.example.com/src/sample.html">
Relative URL: <a href = "/src/sample.html">
Harika içerik 👍 elinize sağlık