我如何确保X-HTTP-Method头被忽略?



我目前正在为第三方软件发现的漏洞应用安全修复程序。这就是问题所在(经常被误用:HTTP方法覆盖漏洞)。

来自软件的请求类似于:

POST /Home/ViewProfile HTTP/1.1
Referer: https://somesite.com/Home/ViewProfile?qrystr=blahblah
[...]
X-HTTP-METHOD: PUT
X-HTTP-Method-Override: PUT
X-METHOD-OVERRIDE: PUT
[...] 

回答是:

HTTP/1.1 200 OK
[...]

web应用程序不是RESTful API,它只是一个ASP。. NET MVC站点,只有GET和POST操作。

我有几个问题:

  1. 给定应用程序的类型,这是假阳性吗?
  2. 默认情况下,ASP。. NET对这些标头X-HTTP-Method, X-HTTP-Method- override, X-METHOD-OVERRIDE做任何事情,如果没有明确告诉这样做,如在这个例子中?
  3. 关于上面的第一个链接问题,根据我的情况,如果建议的补救措施是必要的/适用的,那么最好的方法是什么?
    "确保只允许必需的标头,并且允许的标头是正确配置的。">

  4. 确保没有实现绕过用户代理、框架或web服务器实施的安全措施的变通方法。

另一件要注意的事情是,我没有权限修改IIS设置,但我可以修改Web.Config。

我在安全团队的扫描中遇到了同样的问题。我所做的是在web.config中将这些请求的大小限制为0。然后服务器返回"HTTP错误431.0 -请求头字段太大",有效地阻止了覆盖。

</system.webServer>
...
<security>
<requestFiltering>
<requestLimits>
<headerLimits>
<add header="X-Http-Method-Override" sizeLimit="0" />
<add header="X-Method-Override" sizeLimit="0" />
<add header="X-HTTP-Method" sizeLimit="0" />
</headerLimits>
</requestLimits>
...
</requestFiltering>
</security>
...
</system.webServer>

然而,我还没有检查这是否有效地取消了安全扫描仪的警报。我怀疑它可能仍然显示,但我准备将其报告为假阳性,因为服务器正在阻止所有具有这些标头的调用。我一得到安全小组的答复就会通知你。

相关内容

最新更新