漏洞分析

0

高危漏洞

4

中危漏洞

2

低危漏洞

3

警告

文件名 myweb.apk
上传者 青稞
文件大小 1.8445730209351MB
MD5 de037666f029958ffa8bc439a306dae3
包名 com.example.administrator.myweb
Main Activity com.example.administrator.myweb.view.MyWeb
Min SDK 15
Target SDK 26

权限列表

# 名称 说明 提示
0 android.permission.RECEIVE_BOOT_COMPLETED 允许应用程序在系统完成启动后即自行启动。这样会延长手机的启动时间,而且如果应用程序一直运行,会降低手机的整体速度。 注意
1 android.permission.REORDER_TASKS 允许应用程序将任务移至前端和后台。恶意应用程序可借此强行进入前端,而不受您的控制。 注意
2 android.permission.ACCESS_NETWORK_STATE 允许应用程序查看所有网络的状态。 提示
3 android.permission.DISABLE_KEYGUARD 允许应用程序停用键锁和任何关联的密码安全设置。例如,在手机上接听电话时停用键锁,在通话结束后重新启用键锁。 提示
4 android.permission.INTERNET 允许程序访问网络. 提示
5 android.permission.SHUTDOWN 使活动管理器进入关闭状态。不执行彻底关机。 提示
6 android.permission.WAKE_LOCK 允许应用程序防止手机进入休眠状态。 提示

四大组件

组件名称

com.example.administrator.myweb.view.MainWebActivity
com.example.administrator.myweb.view.MyWeb

com.example.administrator.myweb.Receiver.BootCompletedReceiver

第三方库

# 库名 介绍

静态扫描发现风险点

风险等级 风险名称

中危

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

中危

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

位置: classes.dex
com.example.administrator.myweb.untils.BaseActivity;->dispatchTouchEvent(Landroid/view/MotionEvent;)Z==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.example.administrator.myweb.untils.BaseActivity;->onTimeOut(Lcom/example/administrator/myweb/untils/Screensaver;)V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
com.example.administrator.myweb.view.MyWeb$1;->onPageFinished(Landroid/webkit/WebView; Ljava/lang/String;)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I
com.example.administrator.myweb.view.MyWeb;->onTimeOut(Lcom/example/administrator/myweb/untils/Screensaver;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.example.administrator.myweb.view.MyWeb$ChildCallback;->handleMessage(Landroid/os/Message;)Z==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
com.example.administrator.myweb.view.MyWeb$1;->onPageStarted(Landroid/webkit/WebView; Ljava/lang/String; Landroid/graphics/Bitmap;)V==>android.util.Log;->i(Ljava/lang/String; Ljava/lang/String;)I

中危

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

位置: classes.dex
'http://192.168.1.176/code/Screen/Carousel/Main_Pos.jsp' used in: Lcom/example/administrator/myweb/view/MyWeb;->()V
'http://schemas.android.com/apk/res/android' used in: Landroid/support/v4/content/res/TypedArrayUtils;->hasAttribute(Lorg/xmlpull/v1/XmlPullParser; Ljava/lang/String;)Z

中危

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

位置: classes.dex
com.example.administrator.myweb.view.MyWeb;

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/

低危

检测到1个WebView系统隐藏接口未移除。

位置: classes.dex
com.example.administrator.myweb.view.MyWeb;->initView()V

android webview组件包含3个隐藏的系统接口:searchBoxJavaBridge_,accessibilityTraversal以及accessibility,恶意程序可以利用它们实现远程代码执行。
如果使用了WebView,那么使用WebView.removeJavascriptInterface(String name) API,显示的移除searchBoxJavaBridge_、accessibility、accessibilityTraversal这三个接口。

参考资料:
http://wolfeye.baidu.com/blog/android-webview/
http://blog.csdn.net/u013107656/article/details/51729398
http://wolfeye.baidu.com/blog/android-webview-cve-2014-7224/

低危

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

位置: classes.dex
com.example.administrator.myweb.view.MyWeb;
kotlin.io.ConsoleKt;

警告

检测到1处addFlags使用Intent.FLAG_ACTIVITY_NEW_TASK。

位置: classes.dex
com.example.administrator.myweb.Receiver.BootCompletedReceiver;->onReceive

APP创建Intent传递数据到其他Activity,如果创建的Activity不是在同一个Task中打开,就很可能被其他的Activity劫持读取到Intent内容,跨Task的Activity通过Intent传递敏感信息是不安全的。建议:
尽量避免使用包含FLAG_ACTIVITY_NEW_TASK标志的Intent来传递敏感信息。

参考资料:
http://wolfeye.baidu.com/blog/intent-data-leak

警告

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

receiver com.example.administrator.myweb.Receiver.BootCompletedReceiver

建议:
(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.example.administrator.myweb.view.MyWeb;->initView()V
com.example.administrator.myweb.view.MyWeb;->initView()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跨站漏洞。
开发中...

应用证书