Android 中的敏感信息泄露

参考文章

安卓漏洞学习

测试 app:diva

漏洞点

不安全的日志输出

主要是由于 app 代码中将敏感信息输出到 app 的 logcat 中

使用 adb 工具查看安卓日志:adb logcat

硬编码

开发人员将密码/密钥等敏感字符字节写在源代码中

不安全的存储

  1. 将敏感数据保存到配置文件xml中;
  2. 将敏感数据保存在本地的数据库中;
  3. 将敏感数据保存在临时文件中。

一般来说,每个应用存储数据的目录/data/data/package-name/只有自身有权限访问
应用创建文件时使用 MODE_PRIVATE 模式,但是当创建文件时使用了 MODE_WORLD_READABLE 或 MODE_WORLD_WRITEABLE 模式,会导致其他程序可以读取创建的内容。
再者:
当手机开启 root 并赋予其他应用 root 权限时,其他应用便可以查看所有其他应用的内容

-rw-rw---- u0_a49   u0_a49      16384 2020-11-22 16:17 ids2

# 其中第一列各个字母/符号分别代表
-   表示无
d   表示这是一个目录,当然还有其他形式,如 l、b、c、p、s
r   可读,4
w   可写,2
x   可执行,1
每三个一组,分别代表 拥有者权限、所在组权限、其他用户权限

# 第二/三列表示:文件(目录)拥有者、文件(目录)拥有者所在的组
# 后面的分别表示文件大小、创建时间以及名称

通过 adb 工具,执行 adb shell 命令进入安卓系统查看具体 app 目录下的各种文件

SharedPreferences 类存储

数据会以.xml的形式存储在/data/data/package-name/shared_prefs/

  1. 首先来到目标 app 的存储目录(/data/data/package-name/),可以看到该文件夹下的内容
  2. 来到 app,点击保存账号密码
  3. 重新查看该目录,发现新的文件夹
  4. 进入文件夹,打开生成的 xml 文件
  5. 具体代码

存到临时文件

跟上一个相似,点击保存账号密码按钮,会在/data/data/package-name/目录下生成一个临时文件
来到/data/data/package-name/目录下,查看文件内容,发现多了一个临时文件

查看文件内容:

具体代码:

明文存储到本地数据库

数据库目录:/data/data/package-name/databases/,以journal结尾的为日志文件
跟上上个相似,点击保存账号密码按钮,会在数据库目录下生成一个名为ids2的 sqlite 数据库以及一个日志文件

使用 sqlite 查看数据库内容

具体代码:

存到 SD 卡中

跟上上个相似,点击保存账号密码按钮,会将账号密码信息存到 sd 卡中
由于模拟器没得 sd 卡,所以只贴具体代码

Internal Storage

使用设备内部存储器来创建和保存文件,通常情况下内部存储的文件只能被该当前程序访问,不可被其他程序或用户访问
常规位置: /data/data/package-name/files/

Content Provider SQL 注入/目录遍历

当 Content Provider 暴露,并具有注入或目录遍历漏洞时,其他用户可通过该组件获取用户数据
具体看这里,传送门

未启用 https/明文传输

抓包看即可,如果应用在传输敏感数据时未采用 https 则存在风险。

posted @ 2020-11-29 17:02  1ndex-  阅读(975)  评论(0编辑  收藏  举报