譯: Holic (知道創宇404安全實驗室)
TL;DR, Internet Explorer 曾經有個這么個 bug,允許攻擊者使受害者發送帶有惡意 Host 頭的請求。文件描述符曾經用它竊取 GitHub 的 OAuth token,我們用它來混淆 Heroku 和Fastly 的 host 路由,使他們能夠在他們客戶的域名下提供我們的內容。Fastly 和 Heroku 從那以后就已修復了自身的問題。
Internet Explorer/Edge malformed Host-header
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
既然 Heroku 和 Fastly 平臺都存在過對 Host 頭解析不嚴的情況。這意味著即使 /字符在 header 中,它們仍然認為 host 是屬于 .to.to的子域名。這便使得在此服務上將*.to.to設為你自己的域名是可行的。將.to.to的所有子域名指向惡意內容,然后利用 Internet Explorer/Edge 的 bug,在綁定到 Heroku/Fastly 域名的平臺上啟動惡意內容服務。
PoC
流程如下所示:
- 創建進行惡意重定向的鏈接發送給受害者
- 重定向的鏈接將會在 Internet Explorer/Edge 上創建畸形 Host 頭。解析結果會變為指向 Fastly/Heroku 的原始域(本例是 www.drupal.org)。
- Fastly/Heroku 將會處理Host頭將其解析為錯誤的域名,在本例中是通配符
*.to.to - Fastly/Heroku 然后會返回我們的域名中的數據,即使瀏覽器解析的域名依然是 Fastly/Heroku 的客戶所有。
下面可以更清晰的看到域名解析情況:
$ 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 沒有太大意義了。
漏洞時間線
- June 16 – Reported to both Fastly and Heroku
- June 21 – Triaged by Fastly
- June 28 – Patch is deployed by Fastly
- June 30 – Triaged by Heroku
- July 7 – Additions to the patch added
- September X – Host header injection in Internet * Explorer/Edge patched by Microsoft
- October 20 – Final patches added by Heroku
本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/85/
暫無評論