0

我目前正在为第三方软件发现的漏洞应用安全修复程序。这就是问题(经常被误用: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,它只是一个只有 GET 和 POST 操作的 ASP.NET MVC 站点。

我有几个问题:

  1. 考虑到应用程序的类型,这是误报吗?
  2. 默认情况下,ASP.NET 是否对这些标头 X-HTTP-Method、X-HTTP-Method-Override、X-METHOD-OVERRIDE 做任何事情,如果没有明确告知这样做,例如在本例中?
  3. 关于上面的第一个链接问题,根据我的情况,如果它们是必要/适用的,那么实现推荐的补救措施的最佳方法是什么:
    “确保只允许所需的标头,并且正确配置了允许的标头。 "

    “确保没有实施变通方法来绕过用户代理、框架或 Web 服务器实施的安全措施。”

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

4

1 回答 1

2

我的安全团队的扫描也遇到了同样的问题。我所做的是在 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>

但是,我还没有检查这是否有效地取消了安全扫描程序的警报。我怀疑它可能仍会显示,但我已准备好报告为误报,因为服务器正在阻止所有带有这些标头的调用。我会在收到安全团队的回复后立即通知您。

于 2021-05-04T05:18:08.550 回答