菜单

微信公众号:Android安全中文站

文章

Home APP漏洞挖掘 Android Webview 远程代码执行之getClassLoader
Home APP漏洞挖掘 Android Webview 远程代码执行之getClassLoader

Android Webview 远程代码执行之getClassLoader

APP漏洞挖掘 by

众所周知,在Android 4.4系统上 Google已经将系统默认的Webkit内核替换成自己的开源项目chromium,并在Issue 213693005(https://codereview.chromium.org/213693005)屏蔽 了webview的object.getClass,android在4.4.4版本上彻底从native层禁止了webview对getClass的调用,从而阻断了一条反射执行命令的道路。但是Context的getClassLoader().loadClass(“java.lang.Runtime”)却是没有被禁止的。

0x1 漏洞原理

同样是webview远程代码执行,原理也是通过反射的方法调用“java.lang.Runtime”来执行命令。不过不能使用getClass,但是可以使用getClassLoader,代码如下:

示例代码

0x2 漏洞限制

addJavascriptInterface绑定的对象必须为context的子类(一般都是activity),因为这样才能调用getClassLoader。

targetSDKversion <17,只有在targetsdk小于17的时候才能调用js对象的任意方法,targetsdk>=17的情况下只能调用加了@JavaScriptInterface注解的方法。

 

0x3 扫描方法

通过分析整个反编译后的smali文件,搜索addJavascriptInterface方法,如果当前类的父类为Context的子类则判定为有漏洞:代码如下:

扫描代码

 

 

目前APPscan已支持对此新型webview远程代码执行的检测。

Android Webview 远程代码执行之getClassLoader

0x4 市场影响

因为无视google对getClass的屏蔽,所以与android版本无关,只与targetSDK版本有关,在android4.4,5.0,5.1,6.0上均能实现远程代码执行。

Android Webview 远程代码执行之getClassLoaderAndroid Webview 远程代码执行之getClassLoader

通过对APPscan大数据中的13万 app以及手其他数据来源的8万app扫描,得出以下结果:

Android Webview 远程代码执行之getClassLoader
Android Webview 远程代码执行之getClassLoader

转载自:http://appscan.360.cn/blog/?p=25    原文作者:360VulpeckerTeam

 

24 2016-08