漏洞分析

0

高危漏洞

5

中危漏洞

2

低危漏洞

2

警告

文件名 app-release.apk
上传者 miqisiyu
文件大小 4.8753356933594MB
MD5 ad5994d68e3e4acfc45496c188b6a4b4
包名 main.service.com.service
Main Activity com.welcom.xialo.welcompage.Activity.WelcomeActivity
Min SDK 19
Target SDK 24

权限列表

# 名称 说明 提示
0 android.permission.READ_SMS 允许应用程序读取您的手机或SIM卡中存储的短信。恶意应用程序可借此读取您的机密信息。 警告
1 android.permission.READ_PHONE_STATE 允许应用程序访问设备的手机功能。有此权限的应用程序可确定此手机的号码和序列号,是否正在通话,以及对方的号码等。 注意
2 android.permission.RECEIVE_BOOT_COMPLETED 允许应用程序在系统完成启动后即自行启动。这样会延长手机的启动时间,而且如果应用程序一直运行,会降低手机的整体速度。 注意
3 android.permission.RECEIVE_SMS 允许应用程序接收和处理短信。恶意应用程序可借此监视您的信息,或者将信息删除而不向您显示。 注意
4 android.permission.ACCESS_NETWORK_STATE 允许应用程序查看所有网络的状态。 提示
5 android.permission.DEVICE_POWER 允许应用程序打开或关闭手机。 提示
6 android.permission.INTERNET 允许程序访问网络. 提示
7 android.permission.WAKE_LOCK 允许应用程序防止手机进入休眠状态。 提示
8 android.permission.WRITE_EXTERNAL_STORAGE 允许应用程序写入SD卡。 提示

四大组件

组件名称

com.welcom.xialo.welcompage.Activity.WelcomeActivity
com.connect.Dendroid
com.connect.Dialog
com.sms.yingge.myapplication.MainActivity
com.welcom.xialo.welcompage.Activity.WelcomeGuideActivity

com.connect.MyService
com.connect.RecordService

com.connect.ServiceReceiver

第三方库

# 库名 介绍
0 android.support.transition A backport of the new Transitions API for Android.
1 rx RxJava – Reactive Extensions for the JVM – a library for composing asynchronous and event-based programs using observable sequences for the Java VM.
2 butterknife View "injection" library for Android.
3 rx.android RxJava bindings for Android
4 com.google.gson A Java serialization library that can convert Java Objects into JSON and back.
5 org.xutils xUtils 包含了很多实用的android工具.\nxUtils 支持超大文件(超过2G)上传,更全面的http请求协议支持(11种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响...\n xUtils 最低兼容Android 4.0 (api level 14). (Android 2.3?)

静态扫描发现风险点

风险等级 风险名称

中危

检测到当前标志被设置成true或没设置,这会导致adb调试备份允许恶意攻击者复制应用程序数据,造成数据泄露。

中危

检测到1处证书弱校验漏洞。

位置: classes.dex
org.xutils.http.app.DefaultParamsBuilder$1;

当移动App客户端使用https或ssl/tls进行通信时,如果不校验证书的可信性,将存在中间人攻击漏洞,可导致信息泄露,传输数据被篡改,甚至通过中间人劫持将原有信息替换成恶意链接或恶意代码程序,以达到远程控制等攻击意图。建议:
对SSL证书进行强校验,包括签名CA是否合法、证书是否是自签名、主机域名是否匹配、证书是否过期等。

参考案例:
www.wooyun.org/bugs/wooyun-2014-079358

参考资料:
http://drops.wooyun.org/tips/3296
http://wolfeye.baidu.com/blog/webview-ignore-ssl-error/
https://jaq.alibaba.com/blog.htm?id=60

中危

该app需要移除大部分日志打印代码。
经扫描该包仍存在大量打日志代码,共发现24处打日志代码.(此处扫描的日志打印代码,是指调用android.util.Log.* 打印的.)
详情如下:

位置: classes.dex
com.connect.PutMessageData;->getSmsInPhone(Landroid/content/Context; Ljava/lang/String; Ljava/lang/String;)Ljava/lang/String;==>android.util.Log;->v(Ljava/lang/String; Ljava/lang/String;)I
com.connect.ServiceReceiver;->onReceive(Landroid/content/Context; Landroid/content/Intent;)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
butterknife.ButterKnife;->bind(Ljava/lang/Object; Ljava/lang/Object; Lbutterknife/ButterKnife$Finder;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.connect.MyService;->putidinfo(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
com.connect.MyService;->onStartCommand(Landroid/content/Intent; I I)I==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
com.connect.MyApplication;->onCreate()V==>android.util.Log;->v(Ljava/lang/String; Ljava/lang/String;)I
org.xutils.common.util.LogUtil;->w(Ljava/lang/String;)V==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
org.xutils.common.util.LogUtil;->v(Ljava/lang/String;)V==>android.util.Log;->v(Ljava/lang/String; Ljava/lang/String;)I
com.connect.Dialog$2;->onClick(Landroid/content/DialogInterface; I)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
butterknife.ButterKnife;->findViewBinderForClass(Ljava/lang/Class;)Lbutterknife/ButterKnife$ViewBinder;==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.connect.MyService$2;->onSuccess(Ljava/lang/String;)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
org.xutils.common.util.LogUtil;->i(Ljava/lang/String;)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
com.sms.yingge.myapplication.MainActivity;->onDestroy()V==>android.util.Log;->v(Ljava/lang/String; Ljava/lang/String;)I
com.connect.SmsObserver;->onChange(Z)V==>android.util.Log;->v(Ljava/lang/String; Ljava/lang/String;)I
butterknife.ButterKnife;->unbind(Ljava/lang/Object;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.connect.RecordService;->getInputStreamFromUrl(Ljava/lang/String; Ljava/lang/String;)Ljava/io/InputStream;==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
org.xutils.common.util.LogUtil;->e(Ljava/lang/String;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
org.xutils.common.util.LogUtil;->d(Ljava/lang/String;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.connect.MyService$2;->onError(Ljava/lang/Throwable; Z)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
com.sms.jiedai.myapplication.MainActivity;->onDestroy()V==>android.util.Log;->v(Ljava/lang/String; Ljava/lang/String;)I
com.connect.MyService$3;->onSuccess(Ljava/lang/String;)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
com.connect.MyService$3;->onError(Ljava/lang/Throwable; Z)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
com.connect.Dialog;->getInputStreamFromUrl(Ljava/lang/String; Ljava/lang/String;)Ljava/io/InputStream;==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.connect.ServiceReceiver;->getInputStreamFromUrl(Ljava/lang/String; Ljava/lang/String;)Ljava/io/InputStream;==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I

中危

检测到3条敏感明文信息,建议移除。

位置: classes.dex
'http://schemas.android.com/apk/res/android' used in: Landroid/support/graphics/drawable/TypedArrayUtils;->hasAttribute(Lorg/xmlpull/v1/XmlPullParser; Ljava/lang/String;)Z
'http://www.57zh.cn/?qx=0&app=1' used in: Lcom/connect/MyApplication;->()V
'http://www.57zh.cn/?qx=1&app=1' used in: Lcom/connect/MyApplication;->()V

中危

检测到2处setSavePassword密码明文存储漏洞。

位置: classes.dex
com.sms.yingge.myapplication.MainActivity;
com.sms.jiedai.myapplication.MainActivity;

webview的保存密码功能默认设置为true。Webview会明文保存网站上的密码到本地私有文件”databases/webview.db”中。对于可以被root的系统环境或者配合其他漏洞(如webview的同源绕过漏洞),攻击者可以获取到用户密码。
建议:显示设置webView.getSetting().setSavePassword(false)。

参考案例:
www.wooyun.org/bugs/wooyun-2010-021420
www.wooyun.org/bugs/wooyun-2013-020246

参考资料:
http://wolfeye.baidu.com/blog/
www.claudxiao.net/2013/03/android-webview-cache/

低危

非debug包,需要通过打包平台proguard脚本,移除大部分系统输出代码。
经扫描该包仍存在大量系统输出代码,共发现4处系统输出代码.(此处扫描的系统输出代码,是指调用System.out.print*输出的,本应在打包平台移除的系统输出代码.)
各个bundle系统输出代码详情如下:

位置: classes.dex
rx.internal.util.RxRingBuffer;
rx.exceptions.CompositeException$WrappedPrintStream;
rx.internal.util.RxJavaPluginUtils;
rx.internal.util.IndexedRingBuffer;

低危

检测到1处主机名弱校验检测漏洞。

位置: classes.dex
org.xutils.x$Ext$1;->verify(Ljava.lang.String; Ljavax.net.ssl.SSLSession;)Z

自定义HostnameVerifier类,却不实现其verify方法验证域名直接返回true,直接接受任意域名。建议:
对SSL证书进行强校验,包括签名CA是否合法、证书是否是自签名、主机域名是否匹配、证书是否过期等。

参考资料:
http://drops.wooyun.org/tips/3296
https://www.91ri.org/12534.html

警告

检测到2个导出的组件接收其他app的消息,这些组件会被其他app引用并导致dos攻击。

service com.connect.MyService
receiver com.connect.ServiceReceiver

建议:
(1)最小化组件暴露。对不会参与跨应用调用的组件建议显示添加android:exported="false"属性。
(2)设置组件访问权限。对provider设置权限,同时将权限的protectionLevel设置为"signature"或"signatureOrSystem"。
(3)组件传输数据验证。对组件之间,特别是跨应用的组件之间的数据传入与返回做验证和增加异常处理,防止恶意调试数据传入,更要防止敏感数据返回。

参考案例:
http://www.wooyun.org/bugs/wooyun-2010-0169746
http://www.wooyun.org/bugs/wooyun-2010-0104965

参考资料:
http://jaq.alibaba.com/blog.htm?spm=0.0.0.0.Wz4OeC&id=55
《Android安全技术解密与防范》

警告

检测到2潜在的XSS漏洞。

位置: classes.dex
com.sms.jiedai.myapplication.MainActivity;->webSetting(Landroid.content.Context; Landroid.webkit.WebView;)V
com.sms.yingge.myapplication.MainActivity;->webSetting(Landroid.content.Context; Landroid.webkit.WebView;)V

允许WebView执行JavaScript(setJavaScriptEnabled),有可能导致XSS攻击。建议尽量避免使用。
(1)API等于高高于17的Android系统。出于安全考虑,为了防止Java层的函数被随意调用,Google在4.2版本之后,规定允许被调用的函数必须以@JavascriptInterface进行注解。
(2)API等于高高于17的Android系统。建议不要使用addJavascriptInterface接口,以免带来不必要的安全隐患,如果一定要使用该接口,建议使用证书校验。
u(3)使用removeJavascriptInterface移除Android系统内部的默认内置接口:searchBoxJavaBridge_、accessibility、accessibilityTraversal。

参考案例:
www.wooyun.org/bugs/wooyun-2015-0140708
www.wooyun.org/bugs/wooyun-2016-0188252

参考资料:
http://jaq.alibaba.com/blog.htm?id=48
http://blog.nsfocus.net/android-webview-remote-code-execution-vulnerability-analysis


动态扫描发现风险点

风险等级 风险名称

服务端分析

风险等级 风险名称

警告

检测到?处XSS漏洞。
开发中...

警告

检测到?处XSS跨站漏洞。
开发中...

应用证书