在对我们的机器进行安全审查时,我发现一台主机通过端口 80 向互联网公开了 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
答案1
如果响应的服务器标头返回“Microsoft-HttpApi/2.0”,则表示正在调用 HTTP.sys 而不是 IIS。漏洞和端口扫描会使用此方法对 IIS 服务器进行指纹识别(即使是隐藏了服务器标头的服务器)。
您可以使用 CURL 抛出错误来测试这一点:
curl -v http://www.yourdomain.com/ -H "Range: bytes=00-18446744073709551615"
如果您的服务器正在发送标头,您将看到类似这样的内容:
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
您可以添加注册表值,以便 HTTP.sys 不包含标头。
- 打开 Regedit
- 导航至:Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters
- 如果DisableServerHeader不存在,则创建它(DWORD 32位)并赋值2。如果它存在,并且值不是2,则将其设置为2。
- 重新启动服务器或通过调用“net stop http”然后“net start http”重新启动 HTTP 服务
添加注册表项后,响应如下所示:
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
在这里发布,以便需要的人可以找到它。(谢谢,Oram!)
答案2
如果你没有任何充分的理由去揭露它,那么你可能不应该揭露它。顺便说一句,你可能对本文决定是否应该公开它
答案3
该服务器响应标头的最常见原因是当 IIS 无法确定要为哪个网站提供服务时。
当以下两项均成立时,IIS 将使用此服务器标头进行响应
- 该请求包含无法识别的主机标头
- 未配置默认网站
或者,如果 IIS 尝试传递的网站配置格式不正确,它将被忽略并被视为缺失,也会产生同样的效果。
答案4
尝试在漏洞数据库中寻找漏洞