本文講的是<b>價值7k美刀的Flickr網站漏洞是怎麼樣的?</b>,Flickr是雅虎旗下圖檔分享網站,Reizelman發現該網站存在三個漏洞,三個漏洞互相配合使用,可以接管他人Flickr帳戶。
Flickr.com登入流程概述
Reizelman發現每次使用者登入Flickr.com網站時,都會被重定向到login.yahoo.com域用于身份驗證。
https://login.yahoo.com/config/login?.src=flickrsignin&.pc=8190&.scrumb=0&.pd=c=H6T9XcS72e4mRnW3NpTAiU8ZkA–&.intl=il&.lang=en&mg=1&.done=https://login.yahoo.com/config/validate?.src=flickrsignin&.pc=8190&.scrumb=0&.pd=c=JvVF95K62e6PzdPu7MBv2V8-&.intl=il&.done =https://www.flickr.com/signin/yahoo/?redir=https://www.flickr.com/null
以上網址是Yahoo帳戶登入頁面,使用者被提示輸入他的賬戶密碼。輸入賬戶密碼并單擊登入後,如果賬戶密碼有效,則将其重定向到以下Flickr url:
https://www.flickr.com/signin/yahoo/?redir=https%3A%2F%2Fwww.flickr.com%2F&.data={first-token-value}&.ys={second-token-value }
Reizelman通過觀察,如果使用者已經登入到Yahoo,再點選登入連結:
https://login.yahoo.com/config/login?.src=flickrsignin&.pc=8190&.scrumb=0&.pd=c=H6T9XcS72e4mRnW3NpTAiU8ZkA–&.intl=il&.lang=en&mg=1&.done=https://login.yahoo.com/config/validate?.src=flickrsignin&.pc=8190&.scrumb=0&.pd=c=JvVF95K62e6PzdPu7MBv2V8-&.intl=il&.done =https://www.flickr.com/signin/yahoo/?redir=https://www.flickr.com/
驗證的流程發生在背景,使用者不需要在Yahoo域輸入他的賬戶密碼,即可完成flickr網站登入認證。
這種的驗證方式可能引發其他使用者的賬戶被黑客接管,因為使用者隻需點選單個連結(如在某些OAuth實作中)來進行身份驗證,這樣他就可以進行身份驗證。熟悉了登入的流程,進行尋找是否有會被他人賬戶被黑客接管的風險。
通過以上的url我發現,我可以控制.done這個參數,該參數控制了登入token的發送位置,看起來雅虎隻驗證https://www.flickr.com/signin/yahoo/這種開頭的域,但是我們仍然可以附加../是以如果我們将../../test附加到.done參數 .ys及.data的Token将被發送到https://www.flickr.com/test頁面。
這給了我一個引導,假如我在ww.flickr.com找到一個重定向,我就可以把Token發送到我控制的伺服器,但是無法在www.flickr.com主域找到一個重定向漏洞,是以我尋找其他的辦法。
經過一番查找,我找到了這個頁面:https://www.flickr.com/html.gne?tighten=0&type=comment,可以在Flickr評論頁面中插入圖檔。我覺得也許可以在評論插入一個外鍊圖檔,Toeken将通過referer字段發送到我控制的機器上,我發表了一個評論插入了圖檔。
該圖像确實插入在評論中了,但是src值成如下連接配接:
https://ec.yimg.com/ec?url=https://attacker.com/someimage.jpg&t=1491136241&sig=FGQiNHDOtEj7LQDBbYBnwA-~C
這實際是雅虎的代理,把使用者上傳圖檔,自己儲存,通過代理的方式來加載顯示,不去請求外部的伺服器。但是,如果我使用一些技巧,我可以操縱Flickr圖像處理邏輯。釋出了以下評論:
該注釋未被代理操作,并且src保持原樣,按理說圖檔會顯示在評論中,但是,有遇到一個問題了,網站使用了Content-Security-Policy(CSP),img-src屬性定義了,隻能從以下的網站加載圖檔。因為我們插入圖檔的網址不是白名單内的,是無法加載的。
知道這一點後,我嘗試在其他頁面尋找可評論的地方,過了一段時間,找到了一個論壇頁面,www.flickr.com/help/forum/en-us/。這個頁面支援HTML代碼插入功能的評論,更爽的是https://www.flickr.com/help/forum/*這個網站都沒用使用CSP。
是以我在論壇釋出了以下評論:
一個外部的圖檔被插入到這裡:
https://www.flickr.com/help/forum/en-us/72157668446997150/page14/
是以我現在要做的就是構造最終的url,如下:
當使用者點選連結時他被重定向到https://www.flickr.com/help/forum/en-us/72157668446997150/page14?data={some-token}&.ys={second -token},在這個請求中,他向浏覽器發出來了如下的請求。
可以看到Referer字段的含有.data={some-token}&.ys={second-token},将要發送到指定的網址,而這個網站是我們控制的,可以拿到Rerferer資訊。
攻擊者通過referer拿到token之後,構造攻擊url,如下
即可登入到受害者的賬戶。
修複
雅虎通過以下的辦法來解決這個漏洞。
1. login.yahoo.com端點上的.done參數僅允許https://www.flickr.com/signin/yahoo/作為有效值。
2.使用“/ / ”的插入的圖檔也是固定的。
3.現在CSP應用于Flickr論壇。
修複時間線
2017年4月2日 – 通過Hackerone的初步報告
2017年4月3日 – 報告舉報
2017年4月10日 – 報告已解決
2017年4月21日 – 7K $獎賞獎勵
原文釋出時間為:2017年5月4日
本文作者:愣娃
本文來自雲栖社群合作夥伴嘶吼,了解相關資訊可以關注嘶吼網站。
<a href="http://www.4hou.com/info/news/4582.html" target="_blank">原文連結</a>