膠州建設(shè)信息網(wǎng)站百度搜索app免費下載
轉(zhuǎn)載與:https://blog.csdn.net/weixin_47723270/article/details/129472716
01?HOST頭部攻擊漏洞知識
Host首部字段是HTTP/1.1新增的,旨在告訴服務(wù)器,客戶端請求的主機名和端口號,主要用來實現(xiàn)虛擬主機技術(shù)。
運用虛擬主機技術(shù),單個主機可以運行多個站點。以下圖為例,hacker和usagidesign兩個站點都運行在同一服務(wù)器A上,不管我們請求哪個域名,最終都會被解析成服務(wù)器A的IP地址,這個時候服務(wù)器就不知道該將請求交給哪個站點處理,因此需要Host字段指定請求的主機名。
我們訪問hacker域名,經(jīng)DNS解析,變成了服務(wù)器A的IP,請求傳達到服務(wù)器A,A接收到請求后,發(fā)現(xiàn)請求報文中的Host字段值為hacker,進而將請求交給hacker站點處理。(這里又涉及到計算機網(wǎng)絡(luò)知識了,是不是覺得要學(xué)的真多?沒關(guān)系,我后面都會一一介紹的)
這個時候,問題就出現(xiàn)了。為了方便獲取網(wǎng)站域名,開發(fā)人員一般依賴于請求包中的Host首部字段。例如,在php里用_SERVER["HTTP_HOST"]。但是這個Host字段值是不可信賴的(可通過HTTP代理工具篡改),如果應(yīng)用程序沒有對Host字段值進行處理,就有可能造成惡意代碼的傳入。
02?漏洞檢測
Host頭攻擊漏洞的檢測比較簡單,只需要抓包,修改Host字段值,提交,查看響應(yīng)中是否包含修改后的Host字段值即可。
下面我分三個場景,介紹一下Host頭攻擊漏洞存在的表現(xiàn)。
跳轉(zhuǎn)
場景一:正常請求,響應(yīng)302,Location首部字段指明跳轉(zhuǎn)的地址,其中Location字段值為Host字段指定的地址。
將請求包的Host字段值修改為www.baidu.com提交,響應(yīng)包中的Location地址也被更改為www.baidu.com。
拼接
場景二:正常請求,正常響應(yīng),將Host字段值拼接到標(biāo)簽屬性值中。
將請求包的Host字段值修改為www.baidu.com提交,發(fā)現(xiàn)服務(wù)器將www.baidu.com拼接到了script標(biāo)簽的src屬性值中。
代碼注入
場景三:這其實也屬于拼接,只不過在場景二的基礎(chǔ)上寫入了惡意代碼。
利用Host字段寫入script標(biāo)簽,彈出警告框。
03?漏洞修復(fù)
對Host字段進行檢測。
Nginx,修改ngnix.conf文件,在server中指定一個server_name名單,并添加檢測。
Apache,修改httpd.conf文件,指定ServerName,并開啟UseCanonicalName選項。
Tomcat,修改server.xml文件,配置Host的name屬性。