綠盟對上線項目進行掃描,目標URL存在http host的頭攻擊漏洞,解決方案和驗證
2018年05月24日 13:33:12 John_mountain 閱讀數 9027
版權聲明:本文爲博主原創文章,遵循 CC 4.0 by-sa 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接:https://blog.csdn.net/qq_35127419/article/details/80433183
近期在使用綠盟對線上項目進行安全掃描時,發現系統存在host頭攻擊漏洞。在此記錄解決的過程以便後期回顧
上述問題出現的原因爲在項目中使用了 request.getServerName 導致漏洞的出現
不要使用request中的serverName,也就是說host header可能會在攻擊時被篡改,依賴request的方法是不可靠的,形如JSP頭部中的:
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
這樣的使用方法就會被漏洞檢測工具查出來,認定有頭攻擊漏洞。
修復方案:
【基於tomcat的修復方案】
打開tomcat的conf目錄中的server.xml文件,在<Host>節點做如下配置:
- <Host name="localhost" appBase="webapps"
- unpackWARs="true" autoDeploy="true"
- xmlValidation="false" xmlNamespaceAware="false">
- <Alias>10.1.8.158</Alias><!--10.1.8.158 本地局域網-->
- <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
- prefix="localhost_access_log." suffix=".txt" resolveHosts="false"
- pattern="%a %A %b %B %h %H %l %m %p %s %S %t %u %U %v %D %T" />
- </Host>
此種方式僅支持Tomcat6.0.x以上版本的修復、網上有基於Filter的修復方式,試了幾個都沒起用。
漏洞驗證
修改完server.xml後需要重啓Tomcat服務,使用vim命令查看文件內容 確認是否已修改
所需工具:burpsuite、360
漏洞修復的步驟:
1.需要安裝burpsuite工具 burpsuite 爲滲透測試工具 具體介紹自行百度
2.設置360的代理,爲後續抓包使用
3.在Proxy頁面訪問漏洞鏈接時使用burp抓包,右鍵將抓到的數據包發送到repeater,切換到repeater選項卡點擊go,查看返回的內容
4.在Proxy頁面將抓到的數據包再次右鍵發送到repeater,修改host的值,點擊go,查看返回結果
判斷:若是修改host值後,返回的結果不一樣,則存在host頭攻擊漏洞,反之一樣則不存在。
修改host baidu.com後,如果響應包返回400 則是不存在的
具體驗證步驟:
1.設置360瀏覽器代理:
360瀏覽器:工具->代理服務器->代理服務器設置
設置好代理:127.0.0.1:8080 -> 確定
2. Burpsuite下載:
http://www.vuln.cn/8847
3.開始抓包驗證漏洞
抓包方法參照http://www.vuln.cn/8847 介紹
未修改server.xml前驗證結果:
抓包:
將抓包結果發送至repeater,進行響應結果的查看 返回200
再次將抓包結果發送至repeater,修改其Host後進行響應結果的查看: 依然成功
修改server.xml之後再次進行漏洞測試:
抓包:
將抓包結果發送至repeater,進行響應結果的查看:返回200
再次將抓包結果發送至repeater,修改其Host後進行響應結果的查看: 返回400
結果:修改其host請求頭之後,響應失敗。
修改host後請求結果爲400 host請求攻擊驗證通過