Web应用安全之Response Header里的敏感信息
Web应用安全之Response Header
文/玄魂
目录
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。配置之前:

配置之后:

1.2.2 删除X-Powered-By字段
打开IIS管理器,切换到站点视图,打开“HTTP响应标头”。


在这里删除X-Powered-By字段。

1.2.3 删除 X-AspNet-Version字段
打开站点下的web.config,做如下配置:
<system.web>
<httpRuntime enableVersionHeader="false" />
</system.web>
1.2.4 删除X-AspNetMvc-Version
打开Global.asax文件,在Application_Start函数中添加如下代码:
MvcHandler.DisableMvcResponseHeader = true;
最后的结果:

欢迎访问玄魂的博客
ps:对此文章或者安全、安全编程感兴趣的读者,可以加qq群:Hacking:303242737;Hacking-2群:147098303;Hacking-3群:31371755;hacking-4群:201891680;Hacking-5群:316885176
Web应用安全之Response Header里的敏感信息的更多相关文章
- C# WEB API ApiController 修改response header contentType
var res = Request.CreateResponse(HttpStatusCode.OK, file); res.Content.Headers.ContentType = new Med ...
- 【Azure 应用服务】App Service 通过配置web.config来添加请求返回的响应头(Response Header)
问题描述 在Azure App Service上部署了站点,想要在网站的响应头中加一个字段(Cache-Control),并设置为固定值(Cache-Control:no-store) 效果类似于本地 ...
- 【转】HTTP Response Header 的 Content-Disposition
因为听到有同事讨论JSP输出Excel文件的,就是在页面上有一个[导出]按钮,能够将查询结果导出到Excel文件让用户下载.有人说要用POI在后台生成临时的Excel文件,然后通过读取FileStre ...
- ASP.NET MVCでResponse Headerのサーバーバージョンをどうやって隠しますか?
本来是发布在客户的Wiki上的,所以用日语写. ---------------------------------------------------------------------------- ...
- 转:PHP--获取响应头(Response Header)方法
转:http://blog.sina.com.cn/s/blog_5f54f0be0102uvxu.html PHP--获取响应头(Response Header)方法 方法一: ========== ...
- Wildfly8 更改response header中的Server参数
项目经过局方安全检查需要屏蔽掉服务器中间件信息,查了一下午,网上看到的都是修改jboss7的,我们使用的wildfly8(jboss改名为wildfly),修改地方不一样,折磨了半天. jboss服务 ...
- ASP.NET MVC中移除冗余Response Header
本文主要介绍如何优化ASP.NET MVC使用IIS时Response Header中的不必要的信息 默认的,创建一个ASP.NET MVC项目,会在Response Header中包含一些敏感的信息 ...
- RobotFramework下的http接口自动化Get Response header 关键字的使用
Get Response header 关键字用来获取http请求返回的http响应头部数据. 常见的Response Header: Header 解释 示例 Accept-Ranges 表明服务器 ...
- nginx 错误502 upstream sent too big header while reading response header from upstream
查看nginx的错误日志,得到以下错误信息:upstream sent too big header while reading response header from upstream按字面意思理 ...
随机推荐
- 糟糕的@@identity,SCOPE_IDENTITY ,IDENT_CURRENT
在某数据库里面,某甲用@@identity来获取最近插入的id值,当在多人环境,发生获取到null值的问题. 那么@@identity是否有存在的必要? 感觉像生个孩子,多了个指头. 有的数据库的ge ...
- Mockplus3.5.0.1新增标注功能
Mockplus3.5.0.1版本中,新增了标注功能.多种标注模式,智能生成,随时查看.原型设计效率更高. Mockplus的标注功能有以下四种模式: 1.无选中标注 在未选中任何组件时,按住Ctrl ...
- RecyclerView错误
1. java.lang.NoClassDefFoundError: android.support.v7.widget.RecyclerView 这个错误真TM见鬼,明明jar包里面就有这个类,工程 ...
- 【UI测试】--菜单位置
- 关于传统项目打成war包的的分析
技术在不断的革新,以前的项目没有jar管理工具时,都是手动将依赖的jar拷贝到项目之下,然后Build Path,之后Maven出现了,出现了jar包中央仓库,所有的jar包资源集中在这里,免去频繁去 ...
- SpringBoot定制修改Servlet容器
1.如何修改Servlet容器的相关配置: 第一种:在application.properties中修改和server有关的配置(ServerProperties提供): server.port=80 ...
- day14(内置函数)
print(list(map(func, lambda x : x)) print(list(filter lambda x : x > len(x))) print(zip(l1,l2,tu) ...
- kbmmw 中简单返回 extjs 数据JSON
以前,我们通过自己写json 来返回数据表的内容.在delphi 10.2.2中,官方自带了一个FDBatchMoveJSONWriter1 来直接处理数据库内容.把结果推送到浏览器客户端. 今天我们 ...
- 初识python函数
一.函数 1.什么是函数 函数是对功能或者动作的封装 2.函数的语法和定义 def 函数名(): 函数体 调用: 函数名() 3.关于函数的返回值 return : 返回 1.当程序没写过retur ...
- flask框架基础
一 web的一些框架介绍 Flask:短小精悍,内部没有包含多少组件,但是第三方的组件是非常丰富的. Django:django是一个重武器,内部包含了非常多的组件:orm,form,modelFor ...