挖洞經驗 | Google服務端Referer信息泄露漏洞

前言

大家好,今天我要來分享的是一個關於Google的簡單漏洞,該漏洞原因在於,Google服務端發生網頁請求時,HTTP Referer報文頭中泄露了用戶隱私和token信息,依葫蘆畫瓢,我發現Google的4個服務端存在該漏洞,最終收穫了共$4633.7美金的賞金。我們一起來看看。xise

google-bug-bounty-program.png

Referrer Policy 介紹

HTTP Referer:Referer報文頭是網頁請求頭的一部分,當瀏覽器向web服務器發送請求的時候,一般會帶上Referer,告訴服務器我是從哪個頁面鏈接過來的,服務器藉此可以獲得一些信息用於處理。例如在tatawed.com/sports/上點擊一個鏈接到達cctv.com首頁,那麼就referrer就是tatawed.com/sports/了。

Referrer 在分析用戶來源時很有用,有着廣泛的使用,如Web Analytics。但 URL 可能包含用戶敏感信息,如果被第三方網站拿到很不安全,比如有些網站直接將 sessionid 或是 token 放在地址欄裏傳遞的,會原樣不動地當作 Referrer 報頭的內容傳遞給第三方網站。因此,就有了 Referrer Policy,新策略中包含了以下指令值:

 


 

enum ReferrerPolicy {

  "",

  "no-referrer",

  "no-referrer-when-downgrade",

  "same-origin",

  "origin",

  "strict-origin",

  "origin-when-cross-origin",

  "strict-origin-when-cross-origin",

  "unsafe-url"

};

 

其中,origin和origin-when-cross-origin指令中,規定需要過濾掉當前頁面的參數及路徑部分。所有規定目的都是限制傳遞用戶Referrer值,以免造成用戶隱私泄露。http://tatawed.com

漏洞1

這個漏洞是我有一天在課後,在閱讀別人寫的一篇Google XSS漏洞分析文章之後有所啓發的,其中講述了在Google Colab中存在的一個XSS漏洞,你可以點此閱讀。當時,我習慣性地打開了https://colab.research.google.com,根本沒想着能發現漏洞的可能,只是在上面胡亂點點各個功能按鈕,看看它們會產生什麼操作。

其中有一個功能是這樣的,它可以從Github中導入項目,從這裏,我嗅到一絲絲可能,於是我就用BurpSuite通過請求頭方式來測試它的SSRF,不尋常的是,其中的referer報文頭引起了我的注意。如果Google Colab服務端中不包含任何用戶身份的token信息,那麼它的行爲沒有異常,但是,很多的Google服務端產品都具備一個功能,那就是通過一個唯一且可共享的URL鏈接來分享某個文檔,那麼這種情況下,就可能會泄露用戶的Referer敏感信息。在如下請求中,從Google Colab服務中鏈接到api.github.com時,就存在Referer信息泄露:

 


 

GET /search/repositories?sort=updated&order=desc&q=user:name+fork:true HTTP/1.1

Host: api.github.com

User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0

Accept: */*

Accept-Language: en-US,en;q=0.5

origin: https://colab.research.google.com

Referer: https://colab.research.google.com/drive/

DNT: 1

BUG 1Connection: close

 

向Google上報之後,我獲得了他們$3133.7美金的獎勵,但我想,Google Colab不只是存在這個漏洞的唯一服務端吧,這個漏洞可能還有其它存在的可能,也會對Google用戶產生更大的影響,所以,我又繼續做了一波測試。

漏洞2

想到URL中的token問題,就得來看看YouTube的Unlisted 視頻了。YouTube的分享機制早前主要基於 “private” 和 “public” 兩種,前者只允許用戶指定的好友能訪問視頻(好友必須有YouTube帳號),後者則允許任何人查看,視頻也會出現在搜索結果中。而Youtube後期推出的Unlisted 視頻不會顯示在用戶公開主頁的列表中或者搜索結果中,前提是需要知道視頻的URL地址可以訪問這個視頻。

但當我在一個Unlisted 視頻評論下發表了一個URL鏈接之後,存在一種Youtube redirector機制把我帶入到那個URL鏈接中去,形如https://www.youtube.com/redirect?q=http%3A%2F%2Fevil.com,而在我困惑的時候,我發現了Youtube主頁中的Gaming欄目,點擊進去,它跳轉到了Youtube子域網站https://gaming.youtube.com,好吧,我來試試看是否存在Referer信息泄露。

1、隨便打開一個視頻;

2、我也懶得打開Burp了,就在視頻評論中複製進入這個鏈接吧https://whatismyreferer.com

https://whatismyreferer.com網站可以自動讀取出跳轉過程中的referer信息)

3、之後,打開上述複製進去的https://whatismyreferer.com鏈接,哇,它竟然泄露了Referer的ID號信息!

上報了這個漏洞後,我收穫了Google官方$500美金獎勵。

漏洞3

有了以上的發現後,我像個野獸一樣按圖索驥地測試Google的各種服務端,之後,又發現了一個名爲Google Fusion Tables 的網站(https://fusiontables.google.com)存在此種漏洞,該網站允許用戶在其中插入一個鏈接,我插入 https://whatismyreferer.com之後,再打開它,它又存在Referer信息泄露,我又在這個漏洞上收穫了$500美金。

漏洞4

還記得漏洞2的Youtube Gaming嗎,之後,有一天我在瀏覽Google新聞時發現,Youtube Gaming作了大量改版,就連其中的小圖標也變了,我就想着,這種改版會不會忽視之前的安全問題呢,這一試確實沒錯,之前那個漏洞2還仍然存在,又是$500美金到手!

感謝Google的漏洞獎勵計劃(Vulnerability Reward Program),給了我如此多的$,謝謝!

af00faaf5ae314fc805c7154ec4677b6.gif

*參考來源:thesecurityexpert,clouds編譯,轉載請註明來自FreeBuf

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章