HOST頭注入漏洞的分析


一、什么是HOST頭?

host頭是HTTP協議頭中的一個字段,如下:

二、HOST頭有什么用?

先來看一下上網流程解析:

  1. 用戶在瀏覽器輸入www.myweb1.com;
  2. 計算機先從本地host文件中解析www.myweb1.com對應什么IP(這個特性可以用來繞CDN或雲waf),找到的話直接通過該IP找到目標服務器;
  3. 一般用戶是不設置本地host文件的,所以大概率會通過DNS服務器去解析域名對應的IP;
  4. DNS查詢后返回給客戶端目標服務器的IP;
  5. 客戶端拿着IP去請求目標服務器;
  6. 此時目標服務器接受請求。
    但很多單台服務器上面會通過中間件搭好幾個虛擬主機,如10.24.22.108的服務器上面,一個apache服務里有兩個網站,且兩個網站的域名分別為www.myweb1.com和www.myweb2.com,端口也是同一個8080。
    這是apache里配置文件配置兩個網站,域名不同,網站不同,但ip相同,端口相同。

這個時候中間件會拿着host頭去解析,你這個請求該分配給哪個網站
用戶輸入的是www.myweb1.com,那么host頭默認就是www.myweb1.com,此時服務器直接把請求定位到第一個網站。
這就是host頭的用處,定位請求對象

三、host頭注入的原理是什么?

一個網站想要完整的展示給用戶需要從指定url加載圖片、JS、CSS等資源,而web程序生成url時會利用函數從host中獲取域名,並將域名拼接到url中,在php中,通常是_SERVER["HTTP_HOST"],下圖就是目標站點通過host頭內容拼接網頁圖片加載url,這里就存在host頭注入漏洞了。

四、host頭注入漏洞有哪些體現方式和檢測方法?

以下host頭全馬賽克的是真實網站域名,47.?.?.15:10002是我的vps

1、拼接

這是正常的數據包

從burp中攔截並修改正常的數據包,修改host頭為攻擊者的vps服務器,這里我vps開啟了http服務的監聽

放行數據包后,vps監聽到大量的請求,可見host被后端拼接了,后端把拼接后的url返回給用戶,用戶的瀏覽器從這些錯誤url去加載資源了(試想一下,如果這里是中間人修改了用戶的請求數據包中的host頭,把host頭改成惡意的url,用戶不自覺地去請求了惡意url,會發生什么有趣的事

2、跳轉

這是正常的數據包,有跳轉

修改一下host頭再試試,還是改成vps的地址,發包,看到vps沒動靜,因為還沒跳轉

點擊跟隨跳轉按鈕,看到服務器返回404,因為我vps上沒東西,而看到vps的監聽,已經有動靜了。

3、代碼注入

這里不做演示了,變相的反射型XSS,在host頭后追加xss代碼,返回的頁面存在xss代碼,在用戶瀏覽器被執行,找一張網圖敷衍一下。

五、host頭注入的危害有哪些?

其實掌握host頭漏洞的原理和檢測方式后,有什么危害自己可以品出來了,為啥這個漏洞被當作中危漏洞,可能是因為利用起來比較麻煩吧。看到網上說的兩個,加上我個人的理解說一下吧。

1、密碼重置

攻擊者發送密碼重置郵件,郵箱改成被害者,host頭改成攻擊者服務器。用戶收到密碼重置郵件時,這個鏈接其實是被篡改了的,點擊后的請求是發到攻擊者服務器的。而我們重置密碼的請求往往是通過GET方式發的,里面攜帶了token等相關的參數,那么攻擊者獲取這些參數后再去重置用戶的密碼,就會非常容易,留下遲遲等不到網站回應的用戶一臉懵逼。

2、緩存污染

中間人把host頭改了,改成自己的服務器地址。用戶訪問的內容被攻擊者惡意編輯,這些內容被緩存在服務器前端的緩存服務器中,例如varnish,用戶就一直上着個假網……

六、host頭注入漏洞怎么修?

  1. 修改中間件配置文件,攜帶不認識的host頭的請求不往網站發,怎么改?我不記得了,運維知道,開發知道。或許是(Nginx改ngnix.conf文件;Apache改httpd.conf文件;Tomcat改server.xml文件)
  2. 別用函數截取host頭內容做拼接url了,比如設置server_name白名單,僅僅拼接來自白名單的host。
    附上大佬的修復建議:https://www.freebuf.com/articles/web/178315.html

七、問題?

在第二點中,中間件通過host頭判定請求往哪個網站發。可能有人會問,我明明改了host頭,這個host肯定不在目標服務器上的,為啥我還能訪問到目標站點?
答:我的猜測是,由於中間件配置了不認識的host頭請求轉發到默認站點。

上述內容如有不當之處,請各位前輩批評指正,相互學習。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM