drozer源码学习二:info+scanner
Information:
datetime: 输出android中当前日期;time. setToNow()
deviceinfo: 输出设备信息
deviceinfo做了三件事:
1. cat /proc/version;输出linux内核版本和gcc编译版本号
2. cat /system/build.prop;输出android的全局属性:虚拟机参数、版本号、处理器、分辨率等等,很重要
3. 执行getprop;输出系统中prop文本的键值对(参考1)
permissions: 输出package中拥有的权限及保护等级
指定permission:setting.mpermissions.get(permission)返回PermissionInfo,其protectionLevel指定permission保护等级;其
descriptionRes是对permission的描述字符串的ID,利用
context. getResources.getString(ID)取得描述符。
Scanner:
activity.browsable: 列出package中能被浏览器调用的activity
根据packagInfo(不用再多说怎么得到吧,看app模块)得到manifest,再扫描出application便签下包含Category = android.intent.category.BROWSABLE的activity并列出其uri
misc:
native: 包含native文件的package,分application和system
在application. publicSourceDir目录下找寻so文件,此功能与app.package.native模块一致(代码相同)
得到application.sharedLibraryFiles,列出包含的native目录(为什么看到的都是jar包?)
readablefiles: 列出目录下可读文件,利用busybox工具中的find指令:
find %s \( -type b -o -type c -o -type f -o -type s \) -perm-o=r \-exec ls {} \;
secretcodes: 列出secretcodes中的android:host,如下图:
实现原理:通过packageName创建applicationContext来获取到apk的xml文本,遍历xml查找data属性为android_secret_code的记录。
关于什么是secretcode,请看链接:Android Secret Code
sflagbinaries: 查找具有suid/sguid的二进制
find %s -type f \( -perm -04000 -o -perm -02000 \) \-exec ls {}\;
那查找这个suid/sgid有什么用的,SUID,SGID,StickyBit详解。Suid/sgid在运行时以root来操作,android中用于手机root。
writablefiles: 列出目录下可写的文件
find %s \( -type b -o -type c -o -type f -o -type s \) -perm-o=w \-exec ls {} \;
provider:
finduris: 列出能被我们访问的provider uri
1.首先根据getpackages得到provideruri;2、构造contentResolver去尝试查询uri即可得到能被我们访问的uri。与app.provider.finduri不同之处在于,后者只得到provider的uri而没有去尝试访问,故不能分辨provider可否被injection。
injection: 可被SQL injection的provider;实质是contentResolver.query
sqltables: 列出provider中可被访问的表,并输出列名
在上面finduri的基础上,再去query “* from sqlite_master—“
traversal:
遍历provider找出有Vulnerable;实质contentResolver.read
参考:
版权声明:本文为博主原创文章,未经博主允许不得转载。
最新文章
- ANE 从入门到精通 --- 使用R* 访问资源
- js回顾2
- JavaScript学习09 函数本质及Function对象深入探索
- Javascript高级程序设计——this、闭包、函数表达式
- mys.cnf-性能优化
- [maven] 常用插件解析
- 汽车XX网站秒杀抢购代码
- Java 和 Javascript 的 Date 与 .Net 的 DateTime 之间的相互转换
- 基于Emgu CV 的手势识别实现PPT的控制放映
- Spring Boot 整合 Elasticsearch,实现 function score query 权重分查询
- Chrome development tools学习笔记(5)
- hadoop小知识札记
- linux系统开机流程详解
- vue初始化项目,构建vuex的后台管理项目架子
- Android JNI 学习(五):References Api
- python 入门基础21 --面向对象_多态、内置方法、反射
- chgrp命令详解
- Visual Studio 2015的安装和简单的测试
- [源码] 定义String s=";abcd";, 求长度
- ansible的简单使用