漏洞免费实战部分-安卓应用漏洞学习case5

前期回顾

漏洞免费实战部分-安卓应用层getLastPathSegment函数问题

漏洞实战部分2-安卓应用ZipEntry对象问题实战

漏洞实战部分3-ContentProvider组件的openFile接口问题

漏洞学习之PWN-easyheap分析

漏洞学习之PWN-HITCON_CTF_2016:Secret Holder

漏洞学习之PWN-绿城杯uaf_pwn 分析

漏洞学习之PWN-ASIS_CTF_2016_b00ks

漏洞学习之PWN-lctf2016:pwn200 堆利用

安卓应用漏洞学习-Content Provider组件的自定义权限

安卓应用漏洞学习case5

本课程学习Content Provider组件的openFileHelper的函数,openFileHelper函数是为了方便实现openFile函数提供简单的实现。

openFileHelper

openFileHelper

三星在野漏洞cve-2021-25337它是系统权限下的任意文件写。openFileHelper函数为了通过uri寻找数据表中_data字段的文件路径,并打开文件返回FileDescriptor对象。根据p0的博客的介绍,漏洞存在三星手机中的剪切板服务中,没有具体的app实现,只有Server.jar包中有具体的实现代码。

cve-2021-25337

cve-2021-25337

案例实战:

为了学习这个openFileHelper函数,我编写一个case5应用。功能简单,应用启动创建一个名为case5.db的数据库并生成表名为hack的数据表。表中有两个字段_id(key键并且自增长)和’ _data’(text字段并不能为空)。

images2

images2

在Activity启动时创建/data/data/package/files/overflow.txt文件。

images2

images2

为了方便调用case5的Content Proider组件,实现一个匹配任意数字调用的uri 如下:

images3

images3

case5运行截图:

case5

case5

在files目录下的文件,如下图可知文件只有case5应用的可以读写:

file

file

编写poc应用调用这个组件,插入数据和查询数据。

打开Android Studio 选择 Start a new Android Studio project项

image

image

选择Empty Activity

image

image

填写项目名和报名,其他不用管,直接Finish

image

image

完成后会进入到MainActivity类中,在onCreate函数中实现代码:

poc

poc

创建调用case5的Content Proider组件uri字符串 ‘content://com.study.case5’。向hack表中的 _data 字段插入文件路径 ‘/data/data/com.test.case5/files/overflow.txt’。case5的Content Proider组件中insert函数会返回插入 _data字段对应的 _id 字段组合的uri。

insert

insert

比如第一次插入 _data 字段那么返回的是 “content://com.test.case5/1”。这个uri保存文件路径,调用openFileDescriptor函数访问文件并写入。

运行poc5界面截图:

poc5

poc5

poc5代码中向文件写入 hello 字符串,此时case5应用中的overflow.txt内容如下:

content

content

调用逻辑:

在poc5中调用openFileDescriptor函数后,通过framework的代理访问到case5的openFile函数,传入的uri假设为 “content://com.study.case5/1” .

openfile

openfile

openFile函数在调用this.openFileHelper函数,函数中它会使用query接口查找hack数据表中 _data字段保存的内容。

openFileHelper2

openFileHelper2

query接口会去调用MyContentProvider组件实现的query函数。

query

query

此时的uri依旧是”content://com.study.case5/1” ,这时会将uri的1变量取出当做_id 字段查询hack表中对应的 _data字段的变量,projection就是openFileHelper函数中传入的 _data 字段。成功查询到字段后返回到openFileHelper函数中,将字段对应的路径文件打开并返回。

openFileHelper3

openFileHelper3

 

 

关注微信公众号或者可以直接加作者微信:

 

 

 

 

posted @ 2023-01-14 11:53  syscallwww  阅读(126)  评论(0编辑  收藏  举报