Android App 注射&&Drozer Use
x01 准备工作



测试环境:
1) 手机root权限
2) Adb.exe
3) 手机usb连接开启debug模式(在设置>关于手机>连续点击多次版本号,即可开启开发者模式)
4) Window下安装drozer
5) 安装完drozer后在其目录下把agent.apk安装到手机
7) 附带测试案例使用app sieve
0x02 drozer安装与使用

安装
1) windows安装
下载:
https://www.mwrinfosecurity.com/products/drozer/community-edition/
在Android设备中安装agent.apk:
|
1 |
>adb install agent.apk |
或者直接连接USB把文件移动到内存卡中安装
2) *inux安装(Debian/Mac)
|
1 2 3 4 5 6 |
$ wget http://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg $ sh setuptools-0.6c11-py2.7.egg $ easy_install --allow-hosts pypi.python.org protobuf $ easy_install twisted==10.2.0 $ easy_install twisted ./drozer-2.3.0-py2.7.egg $ drozer //运行测试 |
下面介绍三种方法运行
1) USB方式
|
1 2 3 |
>adb forward tcp:31415 tcp:31415 //adb目录下运行次命令 选择drozer>Embedded Server>Enabled >drozer.bat console connect //在PC端drozer目录下运行此命令 |
2) Wifi方式
|
1 |
>drozer.bat console connect --server 192.168.1.12:31415 //在PC端执行192.168.1.12为android端ip和端口 |
3) Infrastructure Mode 这种模式涉及到三个通信方,drozer server、drozer agent(Android 设备中)与drozer console。
其中server与agent,server与console需要网络互通。这种模式的好处是你不需要知道android设备的ip,
agent与console的ip段可以隔离的,并且可以支持一个server对应多个设备的操作。
|
1 |
>drozer.bat server start |
在Android设备上新建一个New Endpoint,修改配置Host为PC server端ip,并且启用Endpoint
|
1 |
>drozer console connect --server 192.168.1.2:31415 //192.168.1.2为server端ip和端口 |
使用
> list //列出目前可用的模块,也可以使用ls
> help app.activity.forintent //查看指定模块的帮助信息
> run app.package.list //列出android设备中安装的app
> run app.package.info -a com.android.browser //查看指定app的基本信息
> run app.activity.info -a com.android.browser //列出app中的activity组件
> run app.activity.start --action android.intent.action.VIEW --data-uri http://www.google.com //开启一个activity,例如运行浏览器打开谷歌页面
> run scanner.provider.finduris -a com.sina.weibo //查找可以读取的Content Provider
> run app.provider.query content://settings/secure --selection "name='adb_enabled'" //读取指定Content Provider内容
> run scanner.misc.writablefiles --privileged /data/data/com.sina.weibo //列出指定文件路径里全局可写/可读的文件
> run shell.start //shell操作
> run tools.setup.busybox //安装busybox
> list auxiliary //通过web的方式查看content provider组件的相关内容
> help auxiliary.webcontentresolver //webcontentresolver帮助
> run auxiliary.webcontentresolver //执行在浏览器中以http://localhost:8080即可访问
以sieve示例
> run app.package.list -f sieve //查找sieve应用程序
> run app.package.info -a com.mwr.example.sieve //显示app.package.info命令包的基本信息
> run app.package.attacksurface com.mwr.example.sieve //确定攻击面
> run app.activity.info -a com.mwr.example.sieve //获取activity信息
> run app.activity.start --component com.mwr.example.sieve com.mwr.example.sieve.PWList //启动pwlist
> run app.provider.info -a com.mwr.example.sieve //提供商信息
> run scanner.provider.finduris -a com.mwr.example.sieve //扫描所有能访问地址
>run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/--vertical //查看DBContentProvider/Passwords这条可执行地址
> run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "'" //检测注入
> run app.provider.read content://com.mwr.example.sieve.FileBackupProvider/etc/hosts //查看读权限数据
> run app.provider.download content://com.mwr.example.sieve.FileBackupProvider/data/data/com.mwr.example.sieve/databases/database.db /home/user/database.db //下载数据
> run scanner.provider.injection -a com.mwr.example.sieve //扫描注入地址
> run scanner.provider.traversal -a com.mwr.example.sieve
> run app.service.info -a com.mwr.example.sieve //查看服务
0x03 Android App Injection
1) 首先用drozer扫描Android应用可注入的Url
|
1 |
Dz > run scanner.provider.injection |

2) 启动WebContentResolver.apk应用程序,Web界面访问url格式如下
http://localhost:8080/query?a=providers&path0=Parameter1&path1=Parameter2&pathn=parametern&selName=column&selId=id

解释: providers:为content://后第一个参数比如records Parameter1:为第二个参数operations Parameter2..parametern:为后门的依次类推的参数,如果后面有这么多参数 Column:表字段例如上面字段<_id> Id:为字段数据
注意:格式必须是这样,selName、selId这两个参数第二个单词是大写的。
3) 在PC端运行adb
|
1 |
>adb forward tcp:8080 tcp:8080 //此时在地址栏输入http://localhost:8080即可访问Web界面 |
4) 以content://settings/bookmarks/为例,在地址栏输入
http://localhost:8080/query?a=settings&path0=bookmarks&selName=_id&selId=1

5) 自动化结合SQLMAP

0x04 总结&&解决方案

总结:虽然很多小伙说直接用文件管理进去查看数据库更方便,我也不多说什么,就像上次看到一帖子为了查看wifi密码写了一大篇的,直接进去数据库看不就是了,我能呵呵一句么。
避免这个漏洞方法只需要指定标志读取权限和限制写入权限。如果我们不想共享存储第三方应用程序记录,另一个解决方案可以消除provider或将其设置为false。
0x05 参考:

- https://labs.mwrinfosecurity.com/blog/2011/12/02/how-to-find-android-0day-in-no-time/
Android App 注射&&Drozer Use的更多相关文章
- Android App渗透测试工具drozer,Qark,Androguard
一. drozer简介 drozer(以前称为Mercury)是一款Android安全测试框架. drozer允许您通过承担应用程序的角色并与Dalvik VM,其他应用程序的IPC端点和底层操作系统 ...
- 【转载】Android app 安全测试调研及执行
本文来源于:http://testerhome.com/topics/2209 一.通过在线工具进行测试 1.腾讯金刚审计系统http://service.security.tencent.com 优 ...
- android app性能优化大汇总
这里根据网络上各位大神已经总结的知识内容做一个大汇总,作为记录,方便后续“温故知新”. 性能指标: (1)使用流畅度: 图片处理器每秒刷新的帧数(FPS),可用来指示页面是否平滑的渲染.高的帧率可以 ...
- Android App渗透测试工具汇总
网上搜集了一些App安全学习教程及工具,项目地址:https://github.com/Brucetg/App_Security 一. drozer简介 drozer(以前称为Mercury)是一款A ...
- Android App安全渗透测试(一)
一. 实验环境搭建 1. 安装JDK 2. 安装Android Studio 3. 模拟器或真机 我的是夜神模拟器和nexus 工具 Apktool ...
- Android Studio配置 AndroidAnnotations——Hi_博客 Android App 开发笔记
以前用Eclicps 用习惯了现在 想学学 用Android Studio 两天的钻研终于 在我电脑上装了一个Android Studio 并完成了AndroidAnnotations 的配置. An ...
- Livecoding.tv 现正举行iOS及Android App设计比赛
近日,Livecoding.tv, 一个为世界各地的程序员提供在线实时交流的平台,在其网站上发布了一篇通知, 宣布从4月15日至5月15日,会为iOS和Android的开发者举办一场本地移动app设计 ...
- Android APP 简单高效的禁用横竖屏切换
默认情况下,Android APP的界面会随着手机方向的改变而改变,当手机处于竖屏状态,APP的界面也处于竖屏状态,而当手机处于横屏状态,APP也会自动切换到横屏状态.一般情况下APP的界面都是为竖屏 ...
- Android App的设计架构:MVC,MVP,MVVM与架构经验谈
相关:http://www.cnblogs.com/wytiger/p/5996876.html 和MVC框架模式一样,Model模型处理数据代码不变在Android的App开发中,很多人经常会头疼于 ...
随机推荐
- 第十一章、认识与学习 BASH
第十一章.认识与学习 BASH 1. 认识 BASH 这个 Shell 1.1 硬件.核心与 Shell 1.2 为何要学文字接口的 shell 1.3 系统的合法 shell 与 /etc/shel ...
- 运行Rails server时,出 Error:Address already in use错误
运行dev@ubuntu:~/qq$ rails server出错 [2013-07-30 16:29:23] WARN TCPServer Error: Address already in us ...
- Node.js之Console用法小结
/** * Created by city--online on 16/3/9. */ //console.time()和console.timeEnd()输出中间代码的执行时间(注意:time和ti ...
- LINQ操作List<T>
LINQ操作List<T>主要包括: 1.筛选 List<string> stcdList = stcdArray.ToList<string>() .FindAl ...
- Docker学习(二): 镜像的使用与构建
特别声明: 博文主要是学习过程中的知识整理,以便之后的查阅回顾.部分内容来源于网络(如有摘录未标注请指出).内容如有差错,也欢迎指正! =============系列文章============= 1 ...
- 十九、异步任务编排CompletableFuture
一.简介 并发编程中我们经常创建异步线程来执行任务.但是,当异步任务之间存在依赖关系时,使得我们开发过程变得更加复杂.比如: 1.线程2依赖于线程1的执行结果 2.线程3依赖于线程1和线程2执行结果的 ...
- final的作用
前言 一直想写写这个话题.代表公司也面试过一些求职者,每次面试我必问的两个问题之一 就是“请你谈一谈对于final关键字的理解”.这是一个简单的小问题,但是不要小看它,通过对这个问题的回答以及一些简单 ...
- netty源代码编译_mac os
工作中会用到netty,有随手整理笔记的习惯,故学习整理下,之前看过了理论知识,接下来就看下源码了,先来编译下 个人 fork git:https://github.com/ending06/nett ...
- jvm 类文件结构学习
本文以代码示例来学习 java 类文件的结构,其中对类文件结构的学习均来自周志明先生所著的 <深入理解 Java 虚拟机>一书,在此表示诚挚的感谢. 代码如下: package com.r ...
- Tempter of the Bone 搜索---奇偶性剪枝
Tempter of the Bone Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) ...