【问题标题】:How do I ensure that X-HTTP-Method headers are ignored?如何确保忽略 X-HTTP-Method 标头?
【发布时间】:2021-05-08 00:11:02
【问题描述】:

我目前正在为第三方软件发现的漏洞应用安全修复程序。 This is the issue (Often Misused: HTTP Method Override vulnerability).

来自软件的请求类似于:

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 做任何事情,如果没有明确告知这样做,例如在 this example?
  3. 关于上面的第一个链接问题,根据我的情况,如果它们是必要/适用的,那么实现推荐的补救措施的最佳方法是什么:
    “确保只允许所需的标头,并且正确配置了允许的标头。”
    和
    “确保没有实施变通办法来绕过用户代理、框架或 Web 服务器实施的安全措施。”

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

【问题讨论】:

    标签: asp.net security model-view-controller x-http-method-override


    【解决方案1】:

    我的安全团队在扫描时遇到了同样的问题。我所做的是在 web.config 中将这些请求的大小限制为零 (0)。然后服务器返回一个“HTTP Error 431.0 - Request Header Fields Too Large”,有效地阻止了覆盖。

     </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>
    

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

    【讨论】:

    • 我也刚从我的团队那里得到了扫描结果。除了这个答案,我在网上找不到太多。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-08
    • 1970-01-01
    • 1970-01-01
    • 2013-08-10
    • 2018-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多