IIS 使用不带 Host 标头的 HTTP/1.0 请求泄露内部 IP

IIS 使用不带 Host 标头的 HTTP/1.0 请求泄露内部 IP

Location对我们的 IIS 10 服务器进行安全扫描后发现,当对文件夹(例如)发出请求时,它会通过标头泄露服务器的内部 IP 地址。https://example.org/Content这会生成以下内容(xxx代表内部 IP):

HTTP/1.1 301 Moved Permanently
Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Content-Type: text/html; charset=UTF-8
Expires: -1
Location: https://xxx.xxx.xxx.xxx/Content/
....

几个问题:

  • 修复此问题的最佳做法是什么?
  • 我们如何在扫描软件之外执行 GET HTTP/1.0 请求来模拟这一点并在修复后进行测试?

谢谢。

更新:尝试了 URL 重写规则这个帖子但它会引发 500 错误。

答案1

本文随着这个概述通过中止缺少主机头的请求来防止此类攻击(客户端访问服务器信息泄露漏洞)。

以下是解决此问题的步骤。确保您拥有URL 重写模块安装,

  1. 打开 IIS。

  2. 选择您的网站。

  3. 双击“URL 重写”。

  4. 单击右侧操作面板中的添加规则。

  5. 选择入站规则 > 请求阻止。

  6. 输入规则的以下设置:

    根据以下条件阻止访问:主机头

    阻止请求:不符合模式

    模式(主机头):.+ (读作:“点加”,意思是“匹配一个或多个任意字符”)

    使用: 常用表达

    如何阻止:中止请求

  7. 单击“确定”保存规则。

更新:对 Windows Server 执行的安全扫描表明,此更改之后该漏洞不再存在。

相关内容