译: Holic (知道创宇404安全实验室)
TL;DR, Internet Explorer 曾经有个这么个 bug,允许攻击者使受害者发送带有恶意 Host 头的请求。文件描述符曾经用它窃取 GitHub 的 OAuth token,我们用它来混淆 Heroku 和Fastly 的 host 路由,使他们能够在他们客户的域名下提供我们的内容。Fastly 和 Heroku 从那以后就已修复了自身的问题。
Internet Explorer/Edge 的 bug 就像下面这样(从恶意链接)进行重定向。
HTTP/1.1 307 Redirect
Location: https://www.drupal.org%2f.to.to
这将会导致 Internet Explorer/Edge 发送如下请求至 www.drupal.org :
GET /.to.toto/ HTTP/1.1
Host: www.drupal.org/.to.to
既然 Heroku 和 Fastly 平台都存在过对 Host
头解析不严的情况。这意味着即使 /
字符在 header 中,它们仍然认为 host 是属于 .to.to
的子域名。这便使得在此服务上将*.to.to
设为你自己的域名是可行的。将.to.to
的所有子域名指向恶意内容,然后利用 Internet Explorer/Edge 的 bug,在绑定到 Heroku/Fastly 域名的平台上启动恶意内容服务。
流程如下所示:
*.to.to
下面可以更清晰的看到域名解析情况:
$ host www.drupal.org
www.drupal.org is an alias for j.global-ssl.fastly.net.
它正指向 Fastly。 然后我们使用 cURL 创建如下测试请求:
curl -H 'Host: www.drupal.org/.to.to' https://www.drupal.org/
便得到了以下返回信息:
<script>alert(document.domain)</script>
这是因为我们在 Fastly 声明了 *.to.to
,提供以我们的PoC为内容的简单应用服务。
现在我们发送下述链接至受害者:
https://avlidienbrunn.se/redirect.php?redirect=https://www.drupal.org%252f.to.to
将会给我们下面的重定向响应:
HTTP/1.1 307 Redirect
Location: https://www.drupal.org%2f.to.to
这将使 Internet Explorer/Edge 浏览器发送如下 Host
头:
Host: www.drupal.org/.to.to
与无效化请求相反,这两个服务实际会将 host 头处理为*.to.to
的子域名,提供我们可控的内容服务。
这意味着不严谨的 host 解析和 Internet Explorer/Edge 的 bug 将允许我们对使用这两个服务的客户进行内容欺骗。我们可以提供任何我们想要的内容服务,或者甚至根据同源策略( SOP )创建认证请求来劫持当前用户,
微软先前被通知过两次关于 Host 头注入攻击的事,他们修复了一次,但是版本的回归拟合使其再生枝节。
基本所有使用中间无代理的 Heroku 和 Fastly 服务都会受到漏洞影响。而能够利用此漏洞的只有 Internet Explorer 和 Edge 浏览器。在那段时间里,Safari 浏览器出现过类似的问题(对应中文版:Safari URL重定向漏洞利用分析 ),但源是置空的,因此 SOP 限制了我们不能做额外的请求。尽管在 Safari 上内容提取是有效的,解析后的页面只有我们自己的内容,这就使得 Safari 的 bug 没有太大意义了。