[典型漏洞分享]exported Android content provider引发的隐私泄露问题
YS android手机APP对外开放多余的content provider,可任意增、删、改和查images数据库表格,导致隐私泄露
问题描述:
YS android手机APP使用SQLITE数据库做数据存储,在android系统上可以通过content provider实现对SQLITE数据库的操作,通过drozer查看发现YS APP对外开放了content provider(经确认是不需要开放的),通过测试发现该provider对应images数据表,里面存放了用户名和用户保存在本地的图片信息等,由于该provider同时存在SQL注入漏洞以及读写权限,故通过该provider可任意操纵该数据表格,该provider为:
com.xxx.filesmgt.ImageProvider
测试步骤:
1、 在手机上安装YS APP和drozer agent并启动。
2、 启动drozer连接手机进入console界面。
3、 查看对外开放的content provider的详细信息,如下图所示:

4、 查看存在SQL注入的URI(以下以红线的URI继续扩展测试),如下图:

5、 手动测试SQL注入,可以看到注入点、表格名称和相关字段,如下图所示:

6、 查看数据表格信息,如图:


7、 向数据库中插入一条新记录(此时id为4),如下图所示:

8、 重新查看,发现记录已成功插入,如图所示:

问题扩展:
由于该content provider没有做权限控制,故在同一手机中的任意应用都可以通过该provider控制image数据表格,但目前该表格中没有太多的敏感数据,故风险为低,但其它恶意的程序仍然可以往该数据表格插入大量垃圾数据或篡改数据来致使程序无法正常运行,(获取还可以插入触发器后门)故仍然需要进行防范。
解决建议:
1、 关闭所有不需要对外开放的android四大组件。
2、 对于需要开放的组件应设置合理的权限,如果只需要对同一个签名的其它开放content provider,则可以设置signature级别的权限。
3、使用参数化查询防止SQL注入,参考《移动应用安全开发指南》。
[典型漏洞分享]exported Android content provider引发的隐私泄露问题的更多相关文章
- Android Content Provider Guides
Android Content Provider Guides Content Providers管理对结构化数据集的访问.它们包装数据,并且提供一种定义数据安全的机制. Content provid ...
- Android Content Provider基础
Android Content Provider基础 Content Providers Content providers管理对一个结构化的数据集合的访问.它们封装了数据,并且提供了保护数据安全性的 ...
- 安全防范:nginx下git引发的隐私泄露问题
安全防范:nginx下git引发的隐私泄露问题 1 安全事件 最近阿里云服务器后台管理系统中收到一条安全提示消息,系统配置信息泄露: http://my.domain.com/.git/confi ...
- Android Content Provider Security(转)
四大组件之一-content provider安全详解 原帖地址:http://drops.wooyun.org/tips/4314 0x00 科普 内容提供器用来存放和获取数据并使这些数据可以被所有 ...
- (转载)Android content provider基础与使用
android有一个独特之处就是,数据库只能被它的创建者所使用,其他的应用是不能访问到的,所以如果你想实现不同应用之间的数据共享,就不得不用content provider了.在Android中,co ...
- Android Content Provider简介
Content Provider是Android的四大组件之一,与Activity和Service相同,使用之前需要注册: Android系统中存在大量的应用,当不同的应用程序之间需要共享数据时,可以 ...
- Android Content Provider的启动过程源码分析
本文參考Android应用程序组件Content Provider的启动过程源码分析http://blog.csdn.net/luoshengyang/article/details/6963418和 ...
- 6、Android Content Provider测试
如果你的应用中使用了Content Provider来与其他应用进行数据交互,你需要对Content Provider进行测试来确保正常工作. 创建Content Provider整合测试 在Andr ...
- [Android] Content provider, ContentResolver
Content provider的作用: Content providers manage access to a structured set of data. They encapsulate t ...
随机推荐
- Linux 入门记录:一、命令行 Bash 的基本操作
为了以后长期的线上测试和服务器的性能考量,要用 Linux 服务器了.昨晚装了个 CentOS 6.9,今天开始学学 Linux 基础,扫扫盲.ok,小本本记 ing... 一.Shell简介 She ...
- ICTPOS3.0 词性标注集
Ag 形语素 形容词性语素.形容词代码为a,语素代码g前面置以A. a 形容词 取英语形容词adjective的第1个字母. ad 副形词 直接作状语的形容词.形容词代码a和副词代码d并在一起. an ...
- Oracle 内存顾问
--查看内存相关参数SYS@ test10g> col name for a30SYS@ test10g> col value for a20SYS@ test10g> select ...
- 【LabVIEW技巧】LabVIEW中的错误2
前言 通过上一个文章的介绍,我们发现LabVIEW自带的错误管理依旧比较基础,如果需要对错误进行很好的管理,则需要进一步的进行程序编写. 用于在程序设计的过程中,为了保证程序的健壮性,我们需要 1.忽 ...
- service XXX start启动报start: Rejected send message, 1 matche
转,原文地址:http://blog.sina.com.cn/s/blog_56d8ea9001018w1l.html [问题]start: Rejected send messag现象:crifan ...
- HTML5表单之Input 类型- Date Pickers(日期选择器)
HTML5 拥有多个可供选取日期和时间的新输入类型: date-选取日.月.年 month-选取月.年 week-选取周和年 time-选取时间(小时和分钟) datetime-选取时间.日.月.年( ...
- Android各层推荐开发书籍及参考资料!!!
Android各层推荐开发书籍及参考资料 转自:http://blog.csdn.net/fancylovejava/article/details/8657058 Android系统按照架构来说一共 ...
- django使用JWT保存用户登录信息
在使用前必须弄明白JWT的原理,原理可以看我的另一篇博文:https://www.cnblogs.com/chichung/p/9966027.html JWT的流程 1.签发JWT 在用户正确输入账 ...
- Django视图之ORM更改数据库连接——配置MySQL库
Django中创建app01应用 python manage.py startapp app01 1. 首先安装pymsql模块 # Python3中 pip3 install pymysql 在 p ...
- 手动安装gcc 4.8.5
# 下载gcc wget ftp://ftp.gnu.org/gnu/gcc/gcc-4.8.5/gcc-4.8.5.tar.gz # 解压并进入目录 tar -zxvf gcc-.tar.gz cd ...