Java HTTP Host 頭攻擊原理以及如何防禦

業餘草發表於2019-02-21

點選上方“業餘草”,選擇“置頂公眾號”

第一時間獲取技術乾貨和業界資訊!

640

很對微信群裡的網友,我都稱他們為老鐵,從來不稱兄道弟的,因為我覺得不真實。不向某東,說一套做一套。

其實你只要認真對待大家,大家都會看在心裡,你們說是不是!

對於 Java 程式設計師來說,一個伺服器上跑多個程式是非常常見的現象。

但是這樣做後會有一個問題,那就是容易造成 Host 頭攻擊。這也是之前微信群裡一個網友遇到的問題。今天我在這裡給大家扯一扯。

host 頭(host header或稱主機頭)攻擊,非常常見。比如,在 jsp 中,我們通常可能存在類似下面的程式碼。

640?wx_fmt=png

上面的幾種載入路徑,背後都是通過 host 取得 url 地址,再拼接上固定的內容。

這個時候,假如我把你的 host 頭給改掉了,比如改成我的 www.xttblog.com。然後這時你在載入的 js 檔案,可能就來源於我的網站中已做好陷阱的 js 檔案了。

這樣,黑客就能拿到你的 cookie、使用者名稱、密碼等關鍵資料。這就是著名的 host 頭攻擊。

更有甚者,在你的網站上放入病毒,挖礦等程式碼。而你還不知道你被利用了。

640

那麼該怎麼解決這類問題呢?很簡單,下面我們以 Nginx 為例,只需要修改一下配置檔案即可。Apache 我就不舉例了。

640?wx_fmt=png

新增一個預設 server,當 host 頭被修改匹配不到 server 時會跳到該預設 server,該預設 server 直接返回 403 錯誤。

重啟 nginx 即可。

除了這種做法,也可以在目標 server 新增檢測規則。比如下面的 if 判斷配置。

640?wx_fmt=png

另外,在 Tomcat 的配置檔案,我們也可以直接配置 Host 的 name 為具體的 ip 地址,不要配置 localhost。

640?wx_fmt=png

說白了,這個漏洞是因為你使用了 Host 而沒驗證它。

640?wx_fmt=png

目前,綠盟、burpsuite、360 等工具都可以對這一漏洞進行檢測!

原文連結:https://www.xttblog.com/?p=3895

640

10T技術資源大放送!包括但不限於:C/C++,Linux,Python,Java,PHP,人工智慧,GO等等。在公眾號內回覆對應關鍵字或框架名字,即可免費獲取!!

 你再主動一點點 640?  我們就有故事了

相關文章