漏洞分析

1

高危漏洞

8

中危漏洞

1

低危漏洞

3

警告

文件名 goatdroid.apk
上传者 x565178035
文件大小 1.1981134414673MB
MD5 969bac4cb8392ceb79b5e60f310e480b
包名 org.owasp.goatdroid.fourgoats
Main Activity org.owasp.goatdroid.fourgoats.activities.Main
Min SDK 9
Target SDK 15

权限列表

# 名称 说明 提示
0 android.permission.CALL_PHONE 允许应用程序在您不介入的情况下拨打电话。恶意应用程序可借此在您的话费单上产生意外通话费。请注意,此权限不允许应用程序拨打紧急呼救电话。 警告
1 android.permission.SEND_SMS 允许应用程序发送短信。恶意应用程序可能会不经您的确认就发送信息,给您带来费用。 警告
2 android.permission.ACCESS_COARSE_LOCATION 访问大概的位置源(例如蜂窝网络数据库)以确定手机的大概位置(如果可以)。恶意应用程序可借此确定您所处的大概位置。 注意
3 android.permission.ACCESS_FINE_LOCATION 访问精准的位置源,例如手机上的全球定位系统(如果有)。恶意应用程序可能会借此确定您所处的位置,并可能消耗额外的电池电量。 注意
4 android.permission.INTERNET 允许程序访问网络. 提示

四大组件

组件名称

org.owasp.goatdroid.fourgoats.activities.Main
org.owasp.goatdroid.fourgoats.activities.Login
org.owasp.goatdroid.fourgoats.activities.Register
org.owasp.goatdroid.fourgoats.activities.Home
org.owasp.goatdroid.fourgoats.fragments.DoCheckin
org.owasp.goatdroid.fourgoats.activities.Checkins
org.owasp.goatdroid.fourgoats.activities.Friends
org.owasp.goatdroid.fourgoats.fragments.HistoryFragment
org.owasp.goatdroid.fourgoats.activities.History
org.owasp.goatdroid.fourgoats.activities.Rewards
org.owasp.goatdroid.fourgoats.activities.AddVenue
org.owasp.goatdroid.fourgoats.activities.ViewCheckin
org.owasp.goatdroid.fourgoats.fragments.MyFriends
org.owasp.goatdroid.fourgoats.fragments.SearchForFriends
org.owasp.goatdroid.fourgoats.activities.ViewProfile
org.owasp.goatdroid.fourgoats.fragments.PendingFriendRequests
org.owasp.goatdroid.fourgoats.activities.ViewFriendRequest
org.owasp.goatdroid.fourgoats.fragments.MyRewards
org.owasp.goatdroid.fourgoats.fragments.AvailableRewards
org.owasp.goatdroid.fourgoats.activities.Preferences
org.owasp.goatdroid.fourgoats.activities.About
org.owasp.goatdroid.fourgoats.activities.SendSMS
org.owasp.goatdroid.fourgoats.activities.DoComment
org.owasp.goatdroid.fourgoats.activities.UserHistory
org.owasp.goatdroid.fourgoats.activities.DestinationInfo
org.owasp.goatdroid.fourgoats.activities.AdminHome
org.owasp.goatdroid.fourgoats.activities.AdminOptions
org.owasp.goatdroid.fourgoats.fragments.ResetUserPasswords
org.owasp.goatdroid.fourgoats.fragments.DeleteUsers
org.owasp.goatdroid.fourgoats.activities.DoAdminPasswordReset
org.owasp.goatdroid.fourgoats.activities.DoAdminDeleteUser
org.owasp.goatdroid.fourgoats.activities.SocialAPIAuthentication
org.owasp.goatdroid.fourgoats.activities.GenericWebViewActivity

org.owasp.goatdroid.fourgoats.services.LocationService

org.owasp.goatdroid.fourgoats.broadcastreceivers.SendSMSNowReceiver

第三方库

# 库名 介绍
0 com.actionbarsherlock Action bar implementation which uses the native action bar on Android 4.0+ and a custom implementation on pre-4.0 through a single API and theme.

静态扫描发现风险点

风险等级 风险名称

高危

检测到1处webview file域同源策略绕过漏洞。

位置: classes.dex
org.owasp.goatdroid.fourgoats.activities.ViewCheckin

恶意app可以利用该漏洞读取cookie等隐私信息文件。不要将不必要组件导出;如需导出,禁止使用File协议;如需使用File协议,禁止js执行:setJavaScriptEnabled(False)。

参考资料:
https://jaq.alibaba.com/blog.htm?id=62

中危

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

中危

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

位置: classes.dex
org.owasp.goatdroid.fourgoats.requestresponse.CustomSSLSocketFactory$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

中危

检测到debug模式被打开。如果该项被打开,app存在被恶意程序调试的风险,可能导致泄露敏感信息等问题,建议关闭debug模式。

中危

检测到1处中间人攻击漏洞。

位置: classes.dex
org.owasp.goatdroid.fourgoats.requestresponse.CustomSSLSocketFactory;->getNewHttpClient()Lorg.apache.http.client.HttpClient;

setHostnameVerifier方法设置ALLOW_ALL_HOSTNAME_VERIFIER,直接接受任意域名,可能造成中间人攻击漏洞。建议:
对SSL证书进行强校验,包括签名CA是否合法、证书是否是自签名、主机域名是否匹配、证书是否过期等。

参考案例:
http://www.wooyun.org/bugs/wooyun-2010-042710
http://www.wooyun.org/bugs/wooyun-2010-052339
http://www.wooyun.org/bugs/wooyun-2016-0190773

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

中危

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

位置: classes.dex
org.owasp.goatdroid.fourgoats.db.CheckinDBHelper$CheckinOpenHelper;->onUpgrade(Landroid/database/sqlite/SQLiteDatabase; I I)V==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
org.owasp.goatdroid.fourgoats.activities.SocialAPIAuthentication$AuthenticateAsyncTask;->doInBackground([Ljava/lang/Void;)Ljava/util/HashMap;==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
org.owasp.goatdroid.fourgoats.db.UserInfoDBHelper$UserInfoOpenHelper;->onUpgrade(Landroid/database/sqlite/SQLiteDatabase; I I)V==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I
org.owasp.goatdroid.fourgoats.activities.Login$ValidateCredsAsyncTask;->doInBackground([Ljava/lang/Void;)Ljava/util/HashMap;==>android.util.Log;->w(Ljava/lang/String; Ljava/lang/String;)I

中危

检测到6个WebView远程执行漏洞。

位置: classes.dex
org.owasp.goatdroid.fourgoats.activities.History;->onCreate(Landroid.os.Bundle;)V
org.owasp.goatdroid.fourgoats.activities.ViewCheckin;->onCreate(Landroid.os.Bundle;)V
org.owasp.goatdroid.fourgoats.activities.ViewCheckin;->onCreate(Landroid.os.Bundle;)V
org.owasp.goatdroid.fourgoats.activities.ViewCheckin;->onCreate(Landroid.os.Bundle;)V
org.owasp.goatdroid.fourgoats.fragments.HistoryDialogFragment;->onCreateView(Landroid.view.LayoutInflater; Landroid.view.ViewGroup; Landroid.os.Bundle;)Landroid.view.View;
org.owasp.goatdroid.fourgoats.fragments.HistoryFragment;->onCreateView(Landroid.view.LayoutInflater; Landroid.view.ViewGroup; Landroid.os.Bundle;)Landroid.view.View;

Android API < 17之前版本存在远程代码执行安全漏洞,该漏洞源于程序没有正确限制使用addJavaScriptInterface方法,攻击者可以通过Java反射利用该漏洞执行任意Java对象的方法,导致远程代码执行安全漏洞。
(1)API等于高于17的Android系统。出于安全考虑,为了防止Java层的函数被随意调用,Google在4.2版本之后,规定允许被调用的函数必须以@JavascriptInterface进行注解。
(2)API等于高于17的Android系统。建议不要使用addJavascriptInterface接口,以免带来不必要的安全隐患,如果一定要使用该接口,建议使用证书校验。
(3)使用removeJavascriptInterface移除Android系统内部的默认内置接口:searchBoxJavaBridge_、accessibility、accessibilityTraversal。

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

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

中危

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

位置: classes.dex
org.owasp.goatdroid.fourgoats.activities.GenericWebViewActivity;
org.owasp.goatdroid.fourgoats.activities.ViewCheckin;
org.owasp.goatdroid.fourgoats.fragments.HistoryFragment;
org.owasp.goatdroid.fourgoats.activities.History;
org.owasp.goatdroid.fourgoats.fragments.HistoryDialogFragment;

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/

中危

检测到7使用全局可读写操作文件。

位置: classes.dex
org.owasp.goatdroid.fourgoats.misc.Utils;->getDestinationInfoMap(Landroid.content.Context;)Ljava.util.HashMap;===>getSharedPreferences
org.owasp.goatdroid.fourgoats.misc.Utils;->getProxyMap(Landroid.content.Context;)Ljava.util.HashMap;===>getSharedPreferences
org.owasp.goatdroid.fourgoats.misc.Utils;->getDestinationInfo(Landroid.content.Context;)Ljava.lang.String;===>getSharedPreferences
org.owasp.goatdroid.fourgoats.activities.Login;->saveCredentials(Ljava.lang.String; Ljava.lang.String;)V===>getSharedPreferences
org.owasp.goatdroid.fourgoats.activities.Login;->onCreate(Landroid.os.Bundle;)V===>getSharedPreferences
org.owasp.goatdroid.fourgoats.misc.Utils;->writeProxyInfo(Landroid.content.Context; Ljava.lang.String; Ljava.lang.String;)V===>getSharedPreferences
org.owasp.goatdroid.fourgoats.misc.Utils;->writeDestinationInfo(Landroid.content.Context; Ljava.lang.String; Ljava.lang.String;)V===>getSharedPreferences

在使用getDir、getSharedPreferences(SharedPreference)或openFileOutput时,如果设置了全局的可读权限,攻击者恶意读取文件内容,获取敏感信息。在设置文件属性时如果设置全局可写,攻击者可能会篡改、伪造内容,可以能会进行诈骗等行为,造成用户财产损失。建议:
(1)使用MODE_PRIVATE模式创建内部存储文件。
(2)加密存储敏感数据。
(3)避免在文件中存储明文和敏感信息。

参考案例:
http://wooyun.org/bugs/wooyun-2010-047172
http://wooyun.org/bugs/wooyun-2010-054438
http://wooyun.org/bugs/wooyun-2010-0151270

参考资料:
https://jaq.alibaba.com/blog.htm?id=56
https://jaq.alibaba.com/blog.htm?id=58
http://wolfeye.baidu.com/blog/global-rw-of-file
http://wolfeye.baidu.com/blog/global-rw-of-sharepreference/

低危

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

位置: classes.dex
org.owasp.goatdroid.fourgoats.activities.History;->onCreate(Landroid.os.Bundle;)V
org.owasp.goatdroid.fourgoats.fragments.HistoryDialogFragment;->onCreateView(Landroid.view.LayoutInflater; Landroid.view.ViewGroup; Landroid.os.Bundle;)Landroid.view.View;
org.owasp.goatdroid.fourgoats.fragments.HistoryFragment;->onCreateView(Landroid.view.LayoutInflater; Landroid.view.ViewGroup; Landroid.os.Bundle;)Landroid.view.View;
org.owasp.goatdroid.fourgoats.activities.GenericWebViewActivity;->onCreate(Landroid.os.Bundle;)V
org.owasp.goatdroid.fourgoats.activities.ViewCheckin;->onCreate(Landroid.os.Bundle;)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/

警告

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

activity org.owasp.goatdroid.fourgoats.activities.ViewCheckin
activity org.owasp.goatdroid.fourgoats.activities.ViewProfile
activity org.owasp.goatdroid.fourgoats.activities.SocialAPIAuthentication
service org.owasp.goatdroid.fourgoats.services.LocationService
receiver org.owasp.goatdroid.fourgoats.broadcastreceivers.SendSMSNowReceiver

建议:
(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安全技术解密与防范》

警告

检测到1个导出的隐式Service组件。
service org.owasp.goatdroid.fourgoats.services.LocationService

建议:为了确保应用的安全性,启动Service时,请始终使用显式Intent,且不要为服务声明Intent过滤器。使用隐式Intent启动服务存在安全隐患,因为您无法确定哪些服务将响应Intent,且用户无法看到哪些服务已启动。从Android 5.0(API 级别 21)开始,如果使用隐式 Intent 调用 bindService(),系统会抛出异常。

参考资料:
https://developer.android.com/guide/components/intents-filters.html#Types

警告

检测到4潜在的XSS漏洞。

位置: classes.dex
org.owasp.goatdroid.fourgoats.activities.GenericWebViewActivity;->onCreate(Landroid.os.Bundle;)V
org.owasp.goatdroid.fourgoats.activities.History;->onCreate(Landroid.os.Bundle;)V
org.owasp.goatdroid.fourgoats.fragments.HistoryDialogFragment;->onCreateView(Landroid.view.LayoutInflater; Landroid.view.ViewGroup; Landroid.os.Bundle;)Landroid.view.View;
org.owasp.goatdroid.fourgoats.fragments.HistoryFragment;->onCreateView(Landroid.view.LayoutInflater; Landroid.view.ViewGroup; Landroid.os.Bundle;)Landroid.view.View;

允许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跨站漏洞。
开发中...

应用证书