forked from Trietptm-on-Security/WooYun-2
-
Notifications
You must be signed in to change notification settings - Fork 7
/
Android App Injection&&Drozer Use.html
180 lines (121 loc) · 118 KB
/
Android App Injection&&Drozer Use.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
<html>
<head>
<title>Android App Injection&&Drozer Use - 小乐天</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<h1>原文地址:<a href="http://drops.wooyun.org/tips/2997">http://drops.wooyun.org/tips/2997</a></h1>
<p>
<h2>0x01 准备工作</h2>
<hr />
<p>测试环境:</p>
<p>1) 手机root权限</p>
<p>2) Adb.exe</p>
<p>3) 手机usb连接开启debug模式(在设置>关于手机>连续点击多次版本号,即可开启开发者模式)</p>
<p>4) Window下安装<a href="https://www.mwrinfosecurity.com/products/drozer/community-edition/">drozer</a></p>
<p>5) 安装完drozer后在其目录下把agent.apk安装到手机</p>
<p>6) <a href="https://labs.mwrinfosecurity.com/system/assets/116/original/WebContentResolver.zip">WebContentResolver.apk</a></p>
<p>7) 附带测试案例使用app <a href="https://www.mwrinfosecurity.com/system/assets/380/original/sieve.apk">sieve</a></p>
<!--more-->
<h2>0x02 drozer安装与使用</h2>
<hr />
<p><strong>安装</strong></p>
<p>1) windows安装 下载:</p>
<p>https://www.mwrinfosecurity.com/products/drozer/community-edition/</p>
<p>在Android设备中安装agent.apk:</p>
<pre><code>#!bash
>adb install agent.apk
</code></pre>
<p>或者直接连接USB把文件移动到内存卡中安装</p>
<p>2) *inux安装(Debian/Mac)</p>
<pre><code>#!bash
$ 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 //运行测试
</code></pre>
<p>下面介绍三种方法运行</p>
<p>1) USB方式</p>
<pre><code>#!bash
>adb forward tcp:31415 tcp:31415 //adb目录下运行次命令
选择drozer>Embedded Server>Enabled
>drozer.bat console connect //在PC端drozer目录下运行此命令
</code></pre>
<p>2) Wifi方式</p>
<pre><code>#!bash
>drozer.bat console connect --server 192.168.1.12:31415 //在PC端执行192.168.1.12为android端ip和端口
</code></pre>
<p>3) Infrastructure Mode 这种模式涉及到三个通信方,drozer server、drozer agent(Android 设备中)与drozer console。</p>
<p>其中server与agent,server与console需要网络互通。这种模式的好处是你不需要知道android设备的ip,</p>
<p>agent与console的ip段可以隔离的,并且可以支持一个server对应多个设备的操作。</p>
<pre><code>#!bash
>drozer.bat server start
</code></pre>
<p>在Android设备上新建一个New Endpoint,修改配置Host为PC server端ip,并且启用Endpoint</p>
<pre><code>#!bash
>drozer console connect --server 192.168.1.2:31415 //192.168.1.2为server端ip和端口
</code></pre>
<p><strong>使用</strong></p>
<pre><code>> 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 //查看服务
</code></pre>
<h2>0x03 Android App Injection</h2>
<p>1) 首先用drozer扫描Android应用可注入的Url</p>
<pre><code>#!bash
Dz > run scanner.provider.injection
</code></pre>
<p><img src="http://static.wooyun.org/20140918/2014091810505521596.png" alt="enter image description here" /></p>
<p>2) 启动WebContentResolver.apk应用程序,Web界面访问url格式如下</p>
<p>http://localhost:8080/query?a=providers&path0=Parameter1&path1=Parameter2&pathn=parametern&selName=column&selId=id</p>
<p><img src="http://static.wooyun.org/20140918/2014091810505587807.png" alt="enter image description here" /></p>
<p>解释: providers:为content://后第一个参数比如records Parameter1:为第二个参数operations Parameter2..parametern:为后门的依次类推的参数,如果后面有这么多参数 Column:表字段例如上面字段<_id> Id:为字段数据</p>
<p>注意:格式必须是这样,selName、selId这两个参数第二个单词是大写的。</p>
<p>3) 在PC端运行adb</p>
<pre><code>#!bash
>adb forward tcp:8080 tcp:8080 //此时在地址栏输入http://localhost:8080即可访问Web界面
</code></pre>
<p>4) 以content://settings/bookmarks/为例,在地址栏输入</p>
<pre><code>http://localhost:8080/query?a=settings&path0=bookmarks&selName=_id&selId=1
</code></pre>
<p><img src="http://static.wooyun.org/20140918/2014091810505587807.png" alt="enter image description here" /></p>
<p>5) 自动化结合SQLMAP</p>
<p><img src="http://static.wooyun.org/20140918/2014091810505661655.png" alt="enter image description here" /></p>
<h2>0x04 总结&&解决方案</h2>
<hr />
<p>总结:虽然很多小伙说直接用文件管理进去查看数据库更方便,我也不多说什么,就像上次看到一帖子为了查看wifi密码写了一大篇的,直接进去数据库看不就是了,我能呵呵一句么。 避免这个漏洞方法只需要指定标志读取权限和限制写入权限。如果我们不想共享存储第三方应用程序记录,另一个解决方案可以消除provider或将其设置为false。</p>
<h2>0x05 参考:</h2>
<hr />
<ul>
<li>https://labs.mwrinfosecurity.com/blog/2011/12/02/how-to-find-android-0day-in-no-time/</li>
</ul> </p>
</body>
</html>