文/玄魂
目錄
Web應用安全之Response Header
前言
1.1 那些敏感的header
1.2 刪除敏感的header
1.2.1 刪除server字段
1.2.2 刪除X-Powered-By字段
1.2.3 刪除 X-AspNet-Version字段
1.2.4 刪除X-AspNetMvc-Version
在Kali Linux(http://www.xuanhun521.com/Blog/Tag/kali%20linux)系列文章中,我提到過對目標站點的信息搜集技巧中最基本的就是Banner抓取。
通過對Web服務器的Banner抓取(分析response header),我們能得到關於Web服務器、應用框架、編程語言等信息。
下圖是某網站的http 響應頭。

在上圖中圈出的部分,我們關注以下幾個字段(針對asp.net應用常見的,並非全部):
Server:web服務器的版本。通常我們會看到 “Microsoft-IIS/7.5”, “nginx/1.0.11” 和 “Apache”這樣的字段。
X-Powered-By:web應用框架信息。常見例子,“ASP.NET”, “PHP/5.2.17” 和“UrlRewriter.NET 2.0.0”。
X-AspNet-Version: asp.net版本,只有asp.net站點有這樣的header。
X-AspNetMvc-Version:asp.net mvc 版本使用asp.net mvc框架會有此字段。
通常情況下這些信息並不會直接帶來危險,但是如果某一天IIS的某個版本爆了一個0day漏洞,那么攻擊者會根據響應頭在很短的時間內找到大批的IIS站點進行攻擊。另外攻擊者會根據搜集到的信息結合已有漏洞進行推論和嘗試,正確的信息會加快攻擊者找到漏洞的步伐。
接下來以我本地的asp.net mvcz站點為例,講解如何刪除響應頭中的敏感字段。
這里需要用到IIS擴展工具Url Scan,關於Url Scan的安裝和配置項說明見之前的博文《URL Scan簡介》。
打開URL Scan的配置文件( C:\Windows\System32\inetsrv\urlscan\UrlScan.ini),找到“RemoveServerHeader”,將值設置為1。配置之前:

配置之后:

打開IIS管理器,切換到站點視圖,打開“HTTP響應標頭”。


在這里刪除X-Powered-By字段。

打開站點下的web.config,做如下配置:
<system.web>
<httpRuntime enableVersionHeader="false" />
</system.web>
打開Global.asax文件,在Application_Start函數中添加如下代碼:
MvcHandler.DisableMvcResponseHeader = true;
最后的結果:

歡迎訪問玄魂的博客
ps:對此文章或者安全、安全編程感興趣的讀者,可以加qq群:Hacking:303242737;Hacking-2群:147098303;Hacking-3群:31371755;hacking-4群:201891680;Hacking-5群:316885176
