DIVA(Damn insecure and vulnerable App)是一个故意设计的存在很多漏洞的Android app,目的是为了让开发、安全工程师、QA等了解Android app常见的一些安全问题,类似dvwa,也可以把它当成一个漏洞演练系统。下载地址:
http://www.payatu.com/wp-content/uploads/2016/01/diva-beta.tar.gz
1,安装JDK,很多工具需要用到Java环境;
2,安装Android开发工具(ADT,Android studio),下载地址:
https://developer.android.com/studio/index.html
3,安装APKtool、Drozer、dex2jar、JD-GUI
Apktoolss下载地址:
https://bitbucket.org/iBotPeaches/apktool/downloads
Drozer下载地址:
https://labs.mwrinfosecurity.com/tools/drozer/
Dex2jar下载地址:
https://sourceforge.net/projects/dex2jar/?source=typ_redirect
JD-GUI下载地址:
http://jd.benow.ca/
或者使用Androl4b虚拟机,下载地址:
http://pan.baidu.com/s/1pL1wewV 密码:drgj
该问题主要是由于app代码中将敏感信息输出到app的logcat中,查看app记录的logcat,可以使用如下命令:
1.adb logcat
2.输入用户凭证,观察日志输出。
3.源码中:Log.e()
可以看出用户输入的内容被输出到了日志中,看看具体的漏洞代码,用JD-GUI打开LogActivity.class文件,相关代码如图:
很多开发小伙伴在开发app的时候,明明是可以用可变变量的,但是由于没有相关安全开发意识,使用了硬编码的方式,导致存在一定的安全风险。具体有关硬编码的定义可以参考百度,开发人员在开发的过程中应该尽量避免使用硬编码。先看看问题2涉及到的代码HardcodeActivity.class,JD-GUI打开,相关代码如下:
查看HardcodeActivity.class:
攻击者只需要在app中输入秘钥vendorsecretkey就可以访问成功,如图:
不安全的数据存储也是App常见的安全问题之一,主要有三种方式:
1,将敏感数据保存到配置文件中;
2,将敏感数据保存在本地的sqlite3数据库中;
3,将敏感数据保存在临时文件或者sd卡中。
SharedPreferences类存储的数据会以.xml的形式存储在
/data/data/apppackagename/shared_prefs
目录下。如图:
cd /data/data/jakhar.aseen.diva/shared_prefs
用户的敏感信息存储到本地的数据库中,一般app对应的数据库目录:
/data/data/apppackagename/databases
本例中是:
/data/data/jakhar.aseem.diva/databases
如图:
cd /data/data/jakhar.aseen.diva/databases
cd /data/data/jakhar.aseen.diva/
存储在sd卡中,漏洞代码片段:
欢迎大家留言与我交流。