DIVA了解APP安全问题

DIVA

DIVA (Damn insecure and vulnerable App),是一个故意设计为全身漏洞的APP软件,它能让开发人员、QA、安全人员了解到APP软件一般存在的问题。

https://github.com/payatu/diva-android

不安全日志输出

开发人员有意或无意地记录敏感信息(如凭据,会话ID,财务详细信息等)

Insecure Logging

我们输入的数字”123456789”,使用adb logcat 命令可以看到

E/diva-log( 3575): Error while processing transaction with credit card: 123456789

使用jd-gui看下logActivity.class 可以发现

{Log.e("diva-log", "Error while processing transaction with credit card: " + paramView.getText().toString());
Toast.makeText(this, "An error occured. Please try again later", 0).show();}、

代码中使用了log.e,如果开发人员在debug时不小心忘记去掉log输出,将会造成很大的安全隐患。

不安全的数据存储

不安全的数据存储也是App常见的安全问题之一,主要有三种方式:

  • 将敏感数据保存到配置文件中。
  • 将敏感数据保存在本地的sqlite3数据库中。
  • 将敏感数据保存在临时文件或者sd卡中。

Insecure Data Storage -Part1

使用了SharedPreferences类,该类是Android平台上一个轻量级的存储类,主要是用来保存一些常用的配置,本例中是用该类存储了用户名和密码,因此是具有风险的。SharedPreferences类存储的数据会以.xml的形式存储在/data/data/apppackagename/shared_prefs目录下

输入用户名和密码都为admin

使用adb连接手机查看文件

InsecureDataStorage1Activity.class

paramView = PreferenceManager.getDefaultSharedPreferences(this).edit();
EditText localEditText1 = (EditText)findViewById(2131493000);
EditText localEditText2 = (EditText)findViewById(2131493001);
paramView.putString("user", localEditText1.getText().toString());
paramView.putString("password", localEditText2.getText().toString());
paramView.commit();
Toast.makeText(this, "3rd party credentials saved successfully!", 0).show();

Insecure Data Storage -Part2

一般app对应的数据库目录: /data/data/apppackagename/databases

输入用户名,密码都为ceshi

使用adb查看数据库

InsecureDataStorage2Activity.class

  SQLiteDatabase localSQLiteDatabase = this.mDB;paramView = new java/lang/StringBuilder;paramView.<init>();localSQLiteDatabase.execSQL("INSERT INTO myuser VALUES ('" + localEditText1.getText().toString() + "', '" + localEditText2.getText().toString() + "');");this.mDB.close();Toast.makeText(this, "3rd party credentials saved successfully!", 0).show();

Insecure Data Storage -Part3

输入用户名和密码为demo

使用adb查看临时文件,目录在/data/data/apppackagename/


InsecureDataStorage3Activity.class

      Object localObject2 = File.createTempFile("uinfo", "tmp", (File)localObject1);((File)localObject2).setReadable(true);((File)localObject2).setWritable(true);localObject1 = new java/io/FileWriter;((FileWriter)localObject1).<init>((File)localObject2);localObject2 = new java/lang/StringBuilder;((StringBuilder)localObject2).<init>();((FileWriter)localObject1).write(localEditText.getText().toString() + ":" + paramView.getText().toString() + "\n");((FileWriter)localObject1).close();Toast.makeText(this, "3rd party credentials saved successfully!", 0).show();

Insecure Data Storage -Part4

存储sd卡的目录一般在: /mnt/sdcard

InsecureDataStorage4Activity.class

    paramView = (EditText)findViewById(2131493010);EditText localEditText = (EditText)findViewById(2131493011);File localFile = Environment.getExternalStorageDirectory();try{Object localObject1 = new java/io/File;Object localObject2 = new java/lang/StringBuilder;((StringBuilder)localObject2).<init>();((File)localObject1).<init>(localFile.getAbsolutePath() + "/.uinfo.txt");((File)localObject1).setReadable(true);((File)localObject1).setWritable(true);localObject2 = new java/io/FileWriter;((FileWriter)localObject2).<init>((File)localObject1);localObject1 = new java/lang/StringBuilder;((StringBuilder)localObject1).<init>();((FileWriter)localObject2).write(paramView.getText().toString() + ":" + localEditText.getText().toString() + "\n");((FileWriter)localObject2).close();Toast.makeText(this, "3rd party credentials saved successfully!", 0).show();return;}

可以看到使用Environment.getExternalStorageDirectory()来获取sd卡的目录,文件名为.unifo.txt

DIVA靶场测试APP客户端不规范项(一)相关推荐

  1. APP客户端性能专项测试手册

    APP客户端性能专项测试手册 一.前言 1.1文档目的 通过对本文档的学习,对APP客户端性能专项测试的理论知识,测试工具,测试方法,缺陷分析思路等能有一定程度的了解,并能快速投入到专项测试工作中去. ...

  2. 测试-APP端常见测试功能点

    ** 一.安装.卸载.更新.运行 1.安装.卸载 ** 应用是否可以正常安装(命令行安装:apk/ipa安装包安装)(有网,无网是否都正常) 卸载过程中出现死机,断电,重启等意外的情况,待环境恢复后是 ...

  3. 网易云易盾朱星星:最容易被驳回的10大APP过检项

    欢迎访问网易云社区,了解更多网易技术产品运营经验. "走进网易:移动测试与安全实践"公开活动在杭州西湖区颐高创业大厦4F楼友会创业咖啡厅举行.本次活动的议题聚焦在如何实现应用的高效 ...

  4. android+噪音测试,关于噪音测试App的选择与使用

    关于噪音测试App的选择与使用 2015-11-26 20:06:53 119点赞 224收藏 63评论 很多值友在写使用评测时都会对噪音大小进行测评,噪音污染在生活中无处不在,人们对噪声污染问题也越 ...

  5. android如何用真机测试,android studio如何使用真机测试app

    在使用android studio进行项目的调试的时候,模拟器真的有点慢,有时还很卡,大家可能还是更想使用真机进行调试,那么下面来看看android studio如何使用真机测试app的教程. 第一大 ...

  6. 懂商业的技术合伙人(14):使用HTML5开发App客户端,HTML5+和MUI框架基本介绍

    我非常倾向使用HTML5,搞定PC Web.Mobile Web.Android和iOS.微信小程序等各种UI开发. 作为技术人员,一次学习,处处使用,是个美好的愿望. 本文把2014~2017年,零 ...

  7. 移动端测试 APP启动性能分析 WebView性能分析 H5性能分析 卡顿分析 帧分析 CPU统计 网络流量分析 耗电量指标 弱网测试 健壮性测试 兼容性测试 Amdahl

    Android官网使用指南性能:https://developer.android.com/topic/performance 一.APP启动性能分析 APP的启动过程 调用起APP.创建一个空白窗口 ...

  8. 视频监控安卓App客户端--Mjpg-streamer推流的播放

    概述: 视频监控安卓App客户端其开发环境是Android Stdio.该软件实现了门禁系统的实时监控的视频的移动端的查看.该软件的设计较为简洁,采用两个文本输入框用于输入嵌入式Linux端服务器的I ...

  9. iPhone手机获取uuid 安装测试app

    iPhone手机获取uuid 安装测试app UDID是一种iOS设备的特殊识别码.除序号之外,每台ios装置都另有一组独一无二的号码,我们就称之为识别码( Unique Device Identif ...

最新文章

  1. 洛谷3605 Promotion Counting
  2. layui的富文本编辑器如何上传图片,以及后期处理
  3. mingw64 下 java,如何安装MinGW-w64和MSYS2?
  4. 再见,RabbitMQ,你好,Kafka!
  5. 服务器硬盘如何验收,系列服务器及存储测试安装验收报告.doc
  6. 第九章 单处理器调度
  7. 指针运算符 * 说明
  8. postgres数据库授权失败
  9. movcms能安装PHP吗,LzCMS-博客版 手动安装方法
  10. 幅频特性曲线protues_第4章 proteus 模拟电路实验与综合设计
  11. Linux命令:md5sum
  12. linux无线网卡信道,linux如何列出网卡支持的wifi信道?
  13. PHP字符串解析函数
  14. slic3r prusaslicer编译
  15. 如何用PS将一张图片裁剪成圆形?
  16. 基因重组-冲刺日志(第七天)
  17. VS Code 字体推荐
  18. 【产品经理学习笔记】Part 7 收益预估
  19. 基于OTSU算法和基本粒子群优化算法的双阈值图像分割
  20. Apktool重打包Apk

热门文章

  1. 辉芒微IO单片机FT60F011A-RB
  2. php mud游戏源码,从零开始构建PHP版mud游戏(三)
  3. 面向时空异构数据的联邦学习
  4. 淘东电商项目(68) -互联网安全架构设计(黑名单拦截及MD5加签)
  5. word中的回车符去除
  6. 【Thingsboard】源码分析:Actor模型架构
  7. 凝胶负载染料行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  8. 食品类小程序有哪些?这3款小程序推荐给你
  9. 如何才能通过一线互联网公司面试?下载量瞬秒百万
  10. Android - 一个似神器而非神器之Palette探索与实践