通过抓包工具burpsuite或者fiddler抓取分析response header包含的字段信息,我们能得到关于Web服务器、应用框架、编程语言等信息。
很多公司安全部门的都会对应用系统进行安全漏洞扫描,其中一项就是过滤敏感信息。response header中的敏感信息及修复方式如下。
下图是某网站的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版本,只要集成IIS的站点都有这样的header。
X-AspNetMvc-Version:asp.net mvc 版本使用asp.net mvc框架会有此字段。
通常情况下这些信息并不会直接带来危险,但是如果某一天IIS的某个版本爆了一个0day漏洞,那么攻击者会根据响应头在很短的时间内找到大批的IIS站点进行攻击。另外攻击者会根据搜集到的信息结合已有漏洞进行推论和尝试,正确的信息会加快攻击者找到漏洞的步伐。
所以很多公司安全部门都会要求必须过滤掉这些敏感信息。
以我实际工作中遇到的客户要求为例,看下如何删除响应头中的敏感字段。
这里需要用到IIS扩展工具Url Scan,下载地址 URLScan3.1 64位
双击安装
如果弹出如下的窗口说明电脑没有安装IIS,必须安装IIS后才能安装urlscan
urlscan使用详解
如果安装了IIS还是报上面的错误那就是少安装一个组件如下图所示:(进入服务器操作系统勾选如图所示红色框内选项后点击下一步安装即可【不需要重启IIS】)
IIS安装如果没有问题,点击UrlScan安装包后则会显示正常的安装界面
一直下一步直到finish即可。
安装好以后不用重启电脑或者IIS服务
直接打开URL Scan的配置文件( C:\Windows\System32\inetsrv\urlscan\UrlScan.ini),找到“RemoveServerHeader”,将值设置为1。不用重启IIS服务,直接刷新抓包就会发现Server已经消失。
配置之前:
配置之后:
另外安装了UrlScan的后系统中的所有请求地址包含中文的都默认无法使用。
需要在URL Scan的配置文件( C:\Windows\System32\inetsrv\urlscan\UrlScan.ini)中配置 AllowHighBitCharacters=1 来开启URL中文支持即可。
打开IIS管理器,切换到站点视图,打开“HTTP响应标头”。
在这里删除X-Powered-By字段。
删除后不用重启IIS,直接刷新站点抓包即可发现 X-POWERED-BY 已经消失。
如果如上操作删除X-Powered-By对其他站点有影响的话,也可以通过如下配置文件的方式去除该响应头。
在IIS根目录下的web.config文件中如下图红色框位置添加移除该消息头的配置项即可。
打开站点下的web.config,做如下配置:(在httpRuntime页签中添加enableVersionHeader="false"属性,与该页签其他属性无关)
如果没有 <system.web>配置项,添加即可。
......
......
......
删除后不用重启IIS,直接刷新站点抓包即可发现 X-ASPNET-VERSION 已经消失
-------- web.config文件 中的如下配置是将IIS站点中的文件编码格式统一配置为utf-8 避免程序文件或者上传的文件出现中文乱码问题 -----------------
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
打开Global.asax文件,在Application_Start函数中添加如下代码:
MvcHandler.DisableMvcResponseHeader = true;
最后的结果: