一,环境配置
好像文章写前面3句话就可以了似的,但是,但是,这个安装包很烦的,搞不好就是1天工夫
所以,有必要分享一下了
二,测试流程
- 测试步骤
1.1环境配置(具体安装包confluence文章搜索drozer)
首先准备以下环境:Windows10
华为真机:P9
Python2.7 (必须用python2.7.。。。用3会报错) (https://www.python.org/ftp/python/2.7.14/python-2.7.14.amd64.msi)
(安装python2.7成功后,还需导入模块pip install protobuf pyopenssl pyyaml)
drozer-2.4.4. https://github.com/mwrlabs/drozer (安装时必须选择python2.7)
(tips:运行时要选择python环境,有python3的话记得手动选python2路径)
Adb AndroidDebugBridge http://adbshell.com/downloads
jdk1.8 https://blog.csdn.net/weixin_37601546/article/details/88623530
说明一下啊,当时下drozer的时候,好不容易下成功了,WIN10电脑就把它当病毒删除,真的难,关闭防护也照样,没办法,只好虚拟机加VPN下载了。另外,如果你的电脑还有python3环境的话,自己环境也需要好好缕一缕,不然报错自己都不知道问什么。简单点一次性python2环境配置:
set path=D:\Python27;D\Python27\Scripts;%path%
1.2具体操作
有了上述前提后,才开始进行安装。
1.2.1 手机开始调式模式就不说了,电脑ADB连接手机adb forward tcp:31415 tcp:31415,随后在drozer.bat所在目录,记住,要进去目录,然后使用命令drozer.bat console connect连接,出现下面情况就成功了。(此刻手机要打开drozer代理)
1.2.2 获取app包名
Windows的CMD命令中输入 adb shell dumpsys window windows | findstr mFocusedApp,
1.2.3 识别攻击面
知道自己测试的APP的包名是com.c503.module.chemicalindustrypack,
在drozer中生成安全报告run app.package.attacksurface com.c503.module.chemicalindustrypack
- 缺陷分析
2.1 界面暴露(activities exported)
界面暴露是指用户登录该界面不需要权限,常存在问题为跳过登录界面获取信息
通过 app.activity.info 我们可以知道哪些activity是可以导出的
接着,就可以经过测试启动activity, 比如启动第一个APPStart界面
dz> run app.activity.start --component com.c503.module.chemicalindustrypack com.c503.module.chemicalindustrypack.AppStart
经测试,只有APPstart启动成功
2.2 broadcast receivers exported (广播接口暴露)
run app.broadcast.info -a //获取broadcast信息
测试后发现:
run app.broadcast.send --component com.c503.module.chemicalindustrypack com.c503.module.air.fragment.PatrolFragment$LocationReceiver发送空intent给广播组件,应用异常关闭
2.3 content providers exported(内容暴露)
通常理解为数据泄露,本次结果显示为0。值得注意的是,使用drozer获取可以访问的url时,有以下内容:
三,drozer测试命令
-
检索包信息
run app.package.list -f <app name>
run app.package.info -a <package name>
-
识别攻击面
run app.package.attacksurface <package name>
-
开发活动
run app.activity.info -a <package name> -u
run app.activity.start --component <package name> <component name>
-
利用内容提供商
run app.provider.info -a <package name>
run scanner.provider.finduris -a <package name>
run app.provider.query <uri>
run app.provider.update <uri> --selection <conditions> <selection arg> <column> <data>
run scanner.provider.sqltables -a <package name>
run scanner.provider.injection -a <package name>
run scanner.provider.traversal -a <package name>
-
利用广播接收器
run app.broadcast.info -a <package name>
run app.broadcast.send --component <package name> <component name> --extra <type> <key> <value>
run app.broadcast.sniff --action <action>
-
开发服务
run app.service.info -a <package name>
run app.service.start --action <action> --component <package name> <component name>
run app.service.send <package name> <component name> --msg <what> <arg1> <arg2> --extra <type> <key> <value> --bundle-as-obj