drozer 常用命令
drozer 常用命令
基础命令
- adb 端口转发,dozer 连接
adb forward tcp:31415 tcp:31415
drozer console connect
- 进入dozer输入list或ls,查看dozer 所有模块
list
- 查找安装包
run app.package.list -f
- 查看安装包信息
run app.package.info -a 安装包名
- 查看暴露的组件
Drozer可检测apk源码四大组件(activities、broadcast receivers、content providers、services)的export情况,并判断export的组件提供那些服务(exported”表示组件可以被其他App使用),因为服务是可以调试的,可以将调试器附加到进程上,进行调试。
run app.package.attacksurface 安装包名
组件安全测试
activity组件
应用程序中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。 Activity之间通过Intent进行通信。在Intent的描述结构中,有两个最重要的部分:动作和动作对应的数据。
run app.activity.info -a 安装包名
run app.activity.start --component 包名 组件名
Services组件
一个Service 是一段长生命周期的,没有用户界面的程序,可以用来开发如监控类程序。较好的一个例子就是一个正在从播放列表中播放歌曲的媒体播放器。在一个媒体播放器的应用中,应该会有多个activity,让使用者可以选择歌曲并播放歌曲。
然而,音乐重放这个功能并没有对应的activity,因为使用者当然会认为在导航到其它屏幕时音乐应该还在播放的。在这个例子中,媒体播放器这个activity 会使用Context.startService()来启动一个service,从而可以在后台保持音乐的播放。同时,系统也将保持这个service 一直执行,直到这个service 运行结束。
另外,我们还可以通过使用Context.bindService()方法,连接到一个service 上(如果这个service 还没有运行将启动它)。当连接到一个service 之后,我们还可以service 提供的接口与它进行通讯。拿媒体播放器这个例子来说,我们还可以进行暂停、重播等操作。 intent-filter未将exported设置为false,默认是可以导出的。
run app.service.info -a
调用组件服务
run app.service.start --action 服务名 --component 包名 服务名
Broadcast组件
BroadcastReceive广播接收器应用可以使用它对外部事件进行过滤只对感兴趣的外部事件(如当电话呼入时,或者数据网络可用时)进行接收并做出响应。广播接收器没有用户界面。然而,它们可以启动一个activity或serice 来响应它们收到的信息,或者用NotificationManager来通知用户。通知可以用很多种方式来吸引用户的注意力──闪动背灯、震动、播放声音等。一般来说是在状态栏上放一个持久的图标,用户可以打开它并获取消息。
run app.broadcast.info -a <package name> 测试对外的broadcast组件信息
run app.broadcast.send --component <package name> <component name> --action <action> --extra <type> <key> <value> 发送带参数的恶意广播
run app.broadcast.send --action <action> 向广播组件发送不完整intent使用空extras,可以看到应用停止运行
Content组件
android平台提供了Content Provider使一个应用程序的指定数据集提供给其他应用程序。这些数据可以存储在文件系统中、在一个SQLite数据库、或以任何其他合理的方式。其他应用可以通过ContentResolver类从该内容提供者中获取或存入数据。只有需要在多个应用程序间共享数据是才需要内容提供者。
run app.provider.info -a
run scanner.provider.findurls -a <package name> 扫描url
run app.provider.query uri 访问url
run scanner.provider.injection -a packageName 扫描那里可以进行SQL注入
run scanner.provider.sqltables -a com.mwr.example.sieve 列举app的表信息
projection 测试:run app.provider.query contentProviderURI --projection "'"
selection 测试:run app.provider.query contentProviderURI --selection "'"
projection注入语句测试:run app.provider.query contentProviderURI --projection "* FROM xx;--"
Selection注入语句测试:run app.provider.query contentProviderURI --selection "1=1);--"
目录遍历漏洞检测:
run scanner.provider.traversal -a <package name>