安全风险?微软-HTTPAPI/2.0

Che*_*oft 12 security iis ssrs

在对我们的机器进行安全审查时,我发现一台主机通过端口 80 向 Internet 公开了 Microsoft-HTTPAPI/2.0 服务。

我对此并不熟悉,但经过谷歌搜索后,我发现 SQL Server 2008 默认在端口 80 上发布 SQL Server Reporting Services,并将自身标识为 HTTPAPI/2.0。主机也运行 IIS7。

我猜这可能不是应该向世界公开的东西。任何人都可以向我提供有关公开此服务的安全风险的任何信息或建议吗?

Response Headers - http://#.#.#.#/
Content-Type: text/html; charset=us-ascii
Server: Microsoft-HTTPAPI/2.0
Date: Mon, 10 Aug 2009 10:44:25 GMT
Connection: close
Content-Length: 315

404 Not Found
Run Code Online (Sandbox Code Playgroud)

Max*_*ell 7

如果您没有任何充分的理由公开它,那么您可能不应该公开它。顺便说一句,你可能对这篇文章感兴趣来决定你是否应该公开它


小智 6

如果响应的服务器标头返回“Microsoft-HttpApi/2.0”,则意味着调用的是 HTTP.sys 而不是 IIS。漏洞利用和端口扫描将此用作对 IIS 服务器(即使是隐藏服务器标头的服务器)进行指纹识别的一种手段。

您可以通过使用 CURL 抛出错误来测试:

curl -v http://www.yourdomain.com/ -H "Range: bytes=00-18446744073709551615"
Run Code Online (Sandbox Code Playgroud)

如果您的服务器正在发送标头,您将看到如下内容:

HTTP/1.1 400 Bad Request
Content-Type: text/html; charset=us-ascii
Server: Microsoft-HTTPAPI/2.0
Date: Thu, 19 Dec 2019 00:45:40 GMT
Connection: close
Content-Length: 339
Run Code Online (Sandbox Code Playgroud)

您可以添加一个注册表值,以便 HTTP.sys 不包含标头。

  • 打开注册
  • 导航到:计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters
  • 如果 DisableServerHeader 不存在,则创建它(DWORD 32 位)并为其赋值 2。如果它存在,并且值不是 2,则将其设置为 2。
  • 重新启动服务器或通过调用“net stop http”然后“net start http”来重新启动 HTTP 服务

参考:WS/WCF:删除服务器头

添加注册表项后,响应如下所示:

HTTP/1.1 400 Bad Request
Content-Type: text/html; charset=us-ascii
Date: Thu, 19 Dec 2019 00:45:40 GMT
Connection: close
Content-Length: 339
Run Code Online (Sandbox Code Playgroud)

发在这里,让需要的人可以找到。(谢谢,奥拉姆!)


Che*_*oft 3

出现此服务器响应标头的最常见原因是 IIS 无法确定要提供服务的网站。

当以下两个条件都成立时,IIS 将使用此服务器标头进行响应

  • 请求包含无法识别的主机标头
  • 没有配置默认网站

或者,如果 IIS 尝试传递的网站配置格式错误,它将被忽略并被视为不存在,也具有相同的效果。

  • 有更多方法可以让此标题出现。此标头意味着 HTTP.sys 发送了响应,而不是 IIS 的工作进程。我相信像 ADFS 3 这样的应用程序在 HTTP.sys 上注册 URL 通常也会使用此标头进行响应。 (3认同)