android webview 跨域,实战Webview跨域访问风险
漏洞原理:
WebView對象的行為是通過WebSettings類進行設置的,如果配置不當,攻擊者就可以利用該漏洞可以打破Android沙盒隔離機制,從而通過某個應用來攻擊其它應用,盜取其它應用本地保存的配置文件、敏感信息等。
主要利用了android.webkit.WebSettings類中setAllowFileAccess()、setJavaScriptEnabled()、setAllowFileAccessFromFileURLs()、setAllowUniversalAccessFromFileURLs()四個方法配置不當(允許webview使用file協議并允許使用javaScript)的風險,并配合Activity組件暴露漏洞進行攻擊。
setAllowFileAccess()
// 啟用或禁用Webview中的文件訪問,默認是true
webView.getSettings().setAllowFileAccess(true);
setJavaScriptEnabled()
// 設置webview是否啟用javascript執行,默認是false,設置為true就是啟用javascript執行。
webview.getWebSettings().setJavaScriptEnabled(true);
setAllowFileAccessFromFileURLs()
// 設置是否允許通過 file url 加載的文件中Js代碼讀取其他的本地文件。
// 需要注意的是如果getAllowUniversalAccessFromFileURLs()的值為true,則此設置的值將被忽略。要啟用最嚴格的安全策略,應該禁用此設置:
webView.getSettings().setAllowFileAccessFromFileURLs(false);
// Api級別15及以下,默認是true
// Api級別JELLY_BEAN(API級別16,android4.1版本代號,中文翻譯果凍豆)及以上默認是false
setAllowUniversalAccessFromFileURLs()
// 設置是否允許通過 file url 加載的 Javascript 可以訪問其他的源(包括http、https等源)
webView.getSettings().setAllowUniversalAccessFromFileURLs(true);
// Api級別15及以下,默認是true
// Api級別JELLY_BEAN(API級別16,android4.1版本代號,中文翻譯果凍豆)及以上默認是false
漏洞危害:
攻擊者利用配置不當的風險,誘導用戶點擊攻擊鏈接,在本地生成html文件,并使用intent對象傳遞該惡意html的file url給被攻擊app可導出的組件,使被攻擊app加載本地生成html文件中的惡意js,達到盜取用戶其它應用私有目錄中保存的敏感欣喜、配置文件的目的。會導致隱私信息泄露,針對IM類軟件會導致聊天信息、聯系人等等重要信息泄露,針對瀏覽器類軟件,則更多的是cookie信息泄露。
以某個app為例,可一下形成該漏洞的原因,以及進行測試的方法。
1,如圖X5WebView類繼承了webview類,并且設置了允許file協議,以及啟用了javascript執行;
2,再看看使用該X5Webview類的Activity,發現URL是從intent傳遞的對象中獲取的,并且沒有做任何白名單處理,直接啟動了Activity;
3,并且發現該activity是可導出的,如圖:
基于以上三點,攻擊者可以用惡意鏈接實現生成本地惡意攻擊html,并傳遞惡意html的file路徑給可導出的組件,該組件加載訪問html文件執行其中的惡意js,會導致私有目錄中的文件被攻擊者獲取。
最后編輯:2018-01-14作者:admin
這個作者貌似有點懶,什么都沒有留下。
總結
以上是生活随笔為你收集整理的android webview 跨域,实战Webview跨域访问风险的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: javascript 压缩工具 esc.
- 下一篇: oracle DNS解析_DNS优选解决