• 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

     

     

    参考:

        1.Android getprop 读取的属性哪里来的?

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    一个文件汇集搜索系统(NiFi + ELK)
    Apache NiFi
    JSONPath
    git免密push方法
    SSH的那些keys
    Elasticsearch
    kubernetes intro
    几个流行的npm包
    Micro-Frontend微前端
    Consul服务注册与服务发现
  • 原文地址:https://www.cnblogs.com/vendanner/p/4784379.html
Copyright © 2020-2023  润新知