目录
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 响应头。
1.1 那些敏感的HEADER
在上图中圈出的部分,我们关注以下几个字段(针对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站点进行攻击。另外攻击者会根据搜集到的信息结合已有漏洞进行推论和尝试,正确的信息会加快攻击者找到漏洞的步伐。
1.2 删除敏感的HEADER
接下来以我本地的asp.net mvcz站点为例,讲解如何删除响应头中的敏感字段。
1.2.1 删除SERVER字段
这里需要用到IIS扩展工具Url Scan,关于Url Scan的安装和配置项说明见之前的博文《URL Scan简介》。
打开URL Scan的配置文件( C:\Windows\System32\inetsrv\urlscan\UrlScan.ini),找到“RemoveServerHeader”,将值设置为1。配置之前:
配置之后:
注意了在II8以上的版本 UrlScan 好像不能使用了,但是移除这个server去更简单了,code 如下:以下code我在win10 上成功测试过
public override void Init()
{
base.Init();
PreSendRequestHeaders += (sender, args) => HttpContext.Current.Response.Headers.Remove("Server");
}