1. 程式人生 > 其它 >主機(host)是指_Web漏洞 | Host頭部攻擊

主機(host)是指_Web漏洞 | Host頭部攻擊

技術標籤:主機(host)是指

在HTTP的請求報文中,我們經常會看到Host欄位,如下

GET /test/ HTTP/1.1Host: www.baidu.comConnection: keep-aliveUpgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8Referer: https://www.baidu.com/index.phpAccept-Encoding: gzip, deflate, brAccept-Language: zh,zh-CN;q=0.8,ar;q=0.6,zh-TW;q=0.4Cookie:BAIDUID=AE4D1DA6B2D6689BB8C557B3436893E3:FG=1;BIDUPSID=AE4D1DA6B2D6689BB8C557B3436893E3;PSTM=1501466227;

以前一直認為Host欄位的作用在於指明HTTP報文傳送的方向,訪問的地址。但是實際上報文轉發已經由網路層和傳輸層決定了IP和埠,http協議只是基於tcp協議的一個封裝。

那麼,Host欄位的作用是什麼呢?

通常,我們一臺伺服器上不止有一個web程式,很多情況下都有幾個web程式,也就是說這幾個web程式共用一個ip地址。當我們配置基於埠的虛擬主機,這是沒有什麼問題的,不同的web程式可以通過不同的埠來判斷。但是,當我們配置基於域名的虛擬主機時,幾個web程式共用一個ip地址(這裡我們假設為192.168.1.1)和一個埠(這裡我們假設為80埠)。那麼,當客戶端請求都發到了伺服器的80埠,伺服器怎麼判斷這條請求是傳送給哪個web程式的呢?這時候,host頭出現了,host頭指定了應該由哪個網站或是web應用程式來處理一個傳入的HTTP請求。web伺服器使用該頭部的值來將請求分派到指定的網站或web應用程式之上。

Host頭部攻擊

這個Host頭是在客戶端的請求頭中的,是由客戶端提供的,也就是說客戶端可以修改這個值。那麼,只要是能被客戶端修改的值,都是不可信任的。

當Host頭部被修改為無效Host頭會發生什麼情況?大多數web伺服器配置為將無法識別的Host頭傳送給列表中的第一臺虛擬主機或者返回錯誤資訊。因此,這使得把攜帶有任意Host頭的請求傳送到第一臺虛擬主機上是可能的。

很多應用直接把Host值不做html編碼便輸出到了頁面中,比如:

<link href=http://_SERVER["HTTP_HOST"]>link>    //觸發一個get請求<form method=”POST”>form>                       //觸發POST請求
當Host欄位被修改為攻擊者構造的惡意地址,這時,就會觸發惡意請求。
這樣處理問題一般會很容易遭遇到兩種常見的攻擊:
  • 快取汙染:快取汙染是指攻擊者通過控制一個快取系統來將一個惡意站點的頁面返回給使用者。

  • 密碼重置:密碼重置這種攻擊主要是因為傳送給使用者的內容是可以汙染的,也就是說可以間接的劫持郵件傳送內容。

參考文章:Host頭攻擊技術解析及防禦


65a71dc7bd44a588a22d8a7533181a00.gif

來源:謝公子的部落格

責編:Zuo

9fa62659d60410fc4b41d4091538ea1c.png 9fa62659d60410fc4b41d4091538ea1c.png f4264a8d5d6daf7c99bfb97f89f20ca2.png由於文章篇幅較長,請大家耐心。如果文中有錯誤的地方,歡迎指出。有想轉載的,可以留言我加白名單。最後,歡迎加入謝公子的小黑屋(安全交流群)(QQ群:783820465) 3ff766aec18f23477d39f0744ecca0b5.gif 9fa62659d60410fc4b41d4091538ea1c.png 9fa62659d60410fc4b41d4091538ea1c.png