Response Header里的Server,X-Powered-By,X-AspNet-Version字段等敏感信息删除

Response Header里的Server,X-Powered-By,X-AspNet-Version字段等敏感信息删除

 

简介

通过抓包工具burpsuite或者fiddler抓取分析response header包含的字段信息,我们能得到关于Web服务器、应用框架、编程语言等信息。

很多公司安全部门的都会对应用系统进行安全漏洞扫描,其中一项就是过滤敏感信息。response header中的敏感信息及修复方式如下。

下图是某网站的http 响应头。

 

1.1  HEADER中包含的敏感字段

在上图中圈出的部分,我们关注以下几个字段(针对asp.net应用常见的,并非全部):

Serverweb服务器的版本。通常我们会看到 “Microsoft-IIS/7.5”, “nginx/1.0.11” 和 “Apache”这样的字段。

X-Powered-Byweb应用框架信息。常见例子,“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站点进行攻击。另外攻击者会根据搜集到的信息结合已有漏洞进行推论和尝试,正确的信息会加快攻击者找到漏洞的步伐。

所以很多公司安全部门都会要求必须过滤掉这些敏感信息。

1.2 删除敏感的HEADER

以我实际工作中遇到的客户要求为例,看下如何删除响应头中的敏感字段。

1.2.1 删除SERVER字段(针对所有集成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中文支持即可。

1.2.2 删除X-POWERED-BY字段(针对所有集成IIS发布站点的应用

打开IIS管理器,切换到站点视图,打开“HTTP响应标头”。

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

删除后不用重启IIS,直接刷新站点抓包即可发现 X-POWERED-BY 已经消失。

如果如上操作删除X-Powered-By对其他站点有影响的话,也可以通过如下配置文件的方式去除该响应头。

在IIS根目录下的web.config文件中如下图红色框位置添加移除该消息头的配置项即可。

1.2.3 删除 X-ASPNET-VERSION字段(针对所有集成IIS发布站点的应用

打开站点下的web.config,做如下配置:(在httpRuntime页签中添加enableVersionHeader="false"属性,与该页签其他属性无关

如果没有 <system.web>配置项,添加即可。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
      <system.web>

            <globalization requestEncoding="utf-8" responseEncoding="utf-8" />
            <httpRuntime enableVersionHeader="false" requestValidationMode="2.0" requestPathInvalidCharacters="" /> 
            ...... 
      </system.web>

      <system.webServer>

            ......
      </system.webServer>

      ......
</configuration>

删除后不用重启IIS,直接刷新站点抓包即可发现 X-ASPNET-VERSION 已经消失

--------     web.config文件 中的如下配置是将IIS站点中的文件编码格式统一配置为utf-8 避免程序文件或者上传的文件出现中文乱码问题   -----------------

<globalization requestEncoding="utf-8" responseEncoding="utf-8" responseHeaderEncoding="utf-8" />

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

1.2.4 删除X-ASPNETMVC-VERSION(只针对asp.net

打开Global.asax文件,在Application_Start函数中添加如下代码:

MvcHandler.DisableMvcResponseHeader = true;

最后的结果:

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当出现500 Internal Server Error错误时,这意味着服务器在处理请求时遇到了一个未知的内部错误。这个错误是一个比较常见的错误,可能会由多种原因引起。根据引用中提供的解决方案,以下是可能的解决方法: 1. 检查Nginx配置文件:首先,确保Nginx的配置文件正确设置并且没有任何语法错误。可以使用命令`nginx -t`来验证配置文件的正确性。如果发现错误,可以根据错误信息进行修正。 2. 检查日志文件:查看Nginx的错误日志文件,通常位于`/var/log/nginx/error.log`。日志文件中可能包含有关导致500错误的更具体的错误信息,可以根据这些信息来进行排除。 3. 检查服务器资源:500错误可能是由于服务器资源不足或者负载过高导致的。可以通过监控服务器的CPU、内存和磁盘使用情况来判断是否存在资源问题,并采取相应的措施来优化服务器配置。 4. 检查应用程序代码:如果你的网站或应用程序使用的是动态语言,比如PHP、Python等,那么500错误也可能是由于应用程序代码中的错误引起的。检查应用程序代码并修复可能存在的错误。 根据引用中提到的命令`C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i`,这是一个用于在IIS上注册ASP.NET的命令。如果你的网站使用了ASP.NET,并且遇到500错误,可以尝试使用这个命令来重新注册ASP.NET。 根据引用中提到的错误模块“ManagedPipelineHandler”,这可能是由于IIS的配置问题导致的。可以尝试将对应的模块从处理程序列表中删除,并重新添加或更新相应的模块。 总之,解决500 Internal Server Error错误需要综合考虑多个因素,包括Nginx配置、日志文件、服务器资源以及应用程序代码等。通过逐步排查和调试,可以找到并解决引起该错误的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值