一個網站圖標引起的血案!繞過同源策略,判斷你是否登陸了某網站

一個網站圖標引起的血案!繞過同源策略,判斷你是否登陸了某網站

Clipboard Image.png

前言

我要告訴你們的是,在沒有獲得你贊成的狀況下,目前大多數主流的網絡平臺都會泄漏你的登陸狀態。不管你當前是否進行了登陸操做,攻擊者均可以檢測到你電腦登陸了那些網絡平臺。並且目前有不少平臺能夠提供人口統計以及個性分析之類的服務,因此攻擊者也能夠就此推測出你的人物特性。php

演示站點:【點我訪問

Clipboard Image.png

技術分析

對於絕大多數的平臺而言,它們均可以利用登陸機制來檢測用戶是否登陸了本身的網絡服務。雖然這個漏洞已經存在多年了,並且這也是一個衆所周知的漏洞,可是目前大多數公司彷佛並不打算去修復它。html

須要注意的是,這個漏洞的利用方法很是簡單,並且修復這個漏洞也十分容易。接下來,我會以facebook.com爲例子來給你們介紹這項技術的工做原理。web

登陸重定向機制是如何工做的?

首先,咱們要了解什麼是登陸重定向機制。假設你已經登陸並正在訪問https://www.facebook.com/bookmarks/pages這個頁面。瀏覽器

如今,在一個單獨的網頁標籤中訪問這個URL地址,此時你在這個網頁標籤中並無進行登陸操做,所以你會被下面這個URL地址重定向至網站服務的登陸頁面:服務器

 

https://www.facebook.com/login.php?next=https%3A%2F%2Fwww.facebook.com%2Fbookmarks%2Fpages

 

請注意上述URL地址中的next參數,該參數的值以下:cookie

 

https%3A%2F%2Fwww.facebook.com%2Fbookmarks%2Fpages

 

咱們就是從該參數中的這個地址跳轉過來的,當咱們完成了登陸操做以後,上面的這個URL會將咱們重定向至以前咱們所要訪問的那個頁面。網絡

若是咱們如今已經登陸了,那麼在一個新的瀏覽器頁面標籤下訪問這個URL地址(https://www.facebook.com/login.php?next=https%3A%2F%2Fwww.facebook.com%2Fbookmarks%2Fpages),那麼瀏覽器會直接將咱們定向至這個頁面。因此咱們能夠得出結論:測試

1.  若是你已經登陸了:URL將返回next參數中的地址;網站

2.  若是你沒有登陸:URL將返回網站服務的登陸頁面;spa

繞過同源策略

這個URL地址有什麼用呢?同源策略能夠防止咱們從除了https://facebook.com以外的其餘域讀取這個請求所返回的結果。

同源策略對於HTML頁面來講是很是嚴格的,可是它容許咱們從其餘域接收圖片資源。因此,若是next參數中的資源是圖片資源的話,咱們就能夠從本身的網站來讀取這部分數據了。Facebook只會檢測URL地址中next參數的值是否以https://facebook.com開頭,因此咱們只須要在Facebook的網站中找一張圖片文件就能夠了。這應該沒什麼困難吧?其實,這確實有點難!由於Facebook網站中的圖片所有託管在域名fbcdn.net。可是還有一張圖片幾乎是全部Web服務器中都會有的,那就是favicon.ico!

下面給出的就是將網站圖標做爲next參數時的URL地址:

 

https://www.facebook.com/login.php?next=https%3A%2F%2Fwww.facebook.com%2Ffavicon.ico

 

這是一個很是有意思的URL地址:

1.  若是你已經登陸了:URL將返回網站圖標;

2.  若是你沒有登陸:URL將返回網站服務的登陸頁面;

咱們能夠在本身網站中的某個<img>標籤內使用這個URL地址:

 

<imgsrc="https://www.facebook.com/login.php?next=https%3A%2F%2Fwww.facebook.com%2Ffavicon.ico">

 

這個<img>標籤的屬性以下:

1.  若是你已經登陸了:你將會接收到網站圖標,HTML頁面會自動加載這個圖片資源,並自動觸發onLoad回調事件;

2.  若是你沒有登陸:你將會接收到網站的登陸頁面,圖標資源會加載失敗,並自動觸發onError回調事件;

最終的漏洞利用代碼以下所示:

 

<img onload="alert('logged in to fb')"onerror="alert('not logged in to fb')"src="https://www.facebook.com/login.php?next=https%3A%2F%2Fwww.facebook.com%2Ffavicon.ico">

 

其餘平臺

這項技術適用於目前絕大多數主流的網絡平臺,由於不少服務提供商在他們的登陸地址中都添加了重定向參數,並且他們也須要在主機中託管網站的圖標資源。

更新信息

2016/10/07:Instagram移除了網站根目錄下的圖標文件,並將其轉移至了他們的CDN中。

2016/10/14:Stackoverflow已經修復了這個問題。

2016/10/14:火狐瀏覽器彷佛也修復了這個問題。由於當咱們使用新版火狐瀏覽器訪問測試頁面時,咱們接收到了以下圖所示的錯誤信息:

Clipboard Image.png

2016/10/14:Netflix經過將頁面重定向至網站主頁面以修復這個問題。

這項技術的可利用性和緩解方案

攻擊者還能夠在去匿名化技術、點擊劫持攻擊和網絡釣魚攻擊中使用這項技術。這樣一來,將會給用戶帶來更大的損失。

所以,爲了緩解這個問題所帶來的影響,首先就是要禁用全部的第三方cookie。除此以外,你也能夠安裝相似Privacy Badger和uMatrix這樣的瀏覽器插件來保護你免受此類攻擊。

總結

若是你發現還有其餘的網站有可能受到這種攻擊技術的影響,請你趕快將它們公佈出來。咱們要向這些平臺施加壓力,若是這個問題愈來愈嚴重,並且愈來愈多的網站會受此影響的話,也許有一天他們會去修復這個問題的。 
相關文章
相關標籤/搜索