ASP.NET MVC 5 Azure App ZAP Scan 指示代理披露漏洞 - 我们如何防止这种情况发生?

Posted

技术标签:

【中文标题】ASP.NET MVC 5 Azure App ZAP Scan 指示代理披露漏洞 - 我们如何防止这种情况发生?【英文标题】:ASP.NET MVC 5 Azure App ZAP Scan indicates Proxy Disclosure vulnerability - how can we prevent that? 【发布时间】:2020-09-30 03:48:42 【问题描述】:

ZAP 扫描报告表明检测到或指纹识别了 2 个代理服务器。它说它对我们的 url 执行了 GET 和 POST 方法,包括 TRACE、带有 Max-Forwards 标头的 OPTIONS 和 TRACK 方法的攻击。我们已经通过 Web 配置更改或代码更改删除了不必要的标头,例如 Server 和 X-Powered-By ...以及响应中的 asp.net 版本标头,但我们仍然看到这一点。此外,提到的 url 只允许 GET 或 POST,而不是 TRACE、OPTIONS 或 TRACK 方法。我们甚至在 web.config 中有以下内容来防止这些动词:

  <system.webServer>
    <security>
      <requestFiltering removeServerHeader="true">
        <verbs allowUnlisted="true">
          <add verb="OPTIONS" allowed="false" />
          <add verb="TRACK" allowed="false" />
          <add verb="TRACE" allowed="false" />
        </verbs>
      </requestFiltering>
    </security>
    <httpErrors errorMode="Custom">
      <remove statusCode="404" />
      <error statusCode="404" path="NotFound.html" responseMode="File" />
      <remove statusCode="500" />
      <error statusCode="500" path="Error.html" responseMode="File" />
    </httpErrors>
    <httpProtocol>
      <customHeaders>
        <remove name="X-Powered-By" />
        <add name="X-Frame-Options" value="SAMEORIGIN" />
      </customHeaders>
    </httpProtocol>
  </system.webServer>

那么我们如何才能解决这个问题,或者我们可以做些什么来防止这种情况发生?谢谢

【问题讨论】:

***.com/questions/61485025/… 您可以先试试我的解决方案,看看是否满足您的需求。我以前自己试过。 所以我们也已经通过 presendrequestheaders 上的 http 模块删除了服务器头。我们还打开了 Azure 中站点上的 Https Only 设置。我可以在响应中看到没有返回 Server 标头,也没有返回 X-Powered-By (这是我们想要的)。此外,如果您要使用 OPTIONS、TRACK 或 TRACE 向我们网站上的任何 url 发送请求,它会以 404 响应,因为无法使用这些动词找到这些路由,只有 GET 或 POST - 因此不允许使用这些路由任何一个。我也不知道第二个代理服务器是如何被检测到的。 所以你已经删除了响应头,对吧? 您现在要阻止TRACE, OPTIONS, or TRACK 方法吗? 【参考方案1】:

我认为你无法解决问题。这部分我研究过,我也在portal提过票。

此响应不是来自服务器,它由 azure 前端处理,无法删除特定标头。

您无需花时间解决此问题,也可以向 Microsoft Azure 提出支持问题。

【讨论】:

以上是关于ASP.NET MVC 5 Azure App ZAP Scan 指示代理披露漏洞 - 我们如何防止这种情况发生?的主要内容,如果未能解决你的问题,请参考以下文章

从托管在 Azure 中的 Asp.net Core MVC Web App 获取“响应状态代码不表示成功:502(错误网关)”

从 GitHub 持续部署在 Azure 中失败(ASP.NET 5 和 MVC 6)

Azure 中的捆绑不适用于 bootstrap 和 jquery、ASP.NET MVC 5

从 Azure 中托管的 ASP.NET Core 5.0 MVC 站点调用 API/服务的间歇性套接字异常

Azure Web App 中的 ASP.NET 5 环境名称

Azure Ad SSO 成功收到 IdToken 但 Request.IsAuthenticated 为 false 并在 asp.net MVC 5 中声明为 null