CVE 您所在的位置:网站首页 win10提权system CVE

CVE

2023-05-27 12:09| 来源: 网络整理| 查看: 265

Part4、漏洞分析

CClfsBaseFilePersisted::LoadContainerQ函数的第215行判断_CLFS_CONTAINER_CONTEXT结构的cidQueue字段值是否为-1,为-1时则调用CClfsBaseFilePersisted::RemoveContainer函数。

CClfsBaseFilePersisted::RemoveContainer函数的第56行调用CClfsBaseFilePersisted::FlushImage函数处理文件数据,当结果大于等于0时,取_CLFS_CONTAINER_CONTEXT的pCaontainer字段值,并调用相关函数。

CClfsBaseFilePersisted::FlushImage函数第8行调用了CClfsBaseFilePersisted::WriteMetadataBlock函数。

CClfsBaseFilePersisted::WriteMetadataBlock函数调用ClfsEncodeBlock和ClfsDecodeBlockjams函数。

ClfsEncodeBlock调用ClfsEncodeBlockPrivate函数处理数据。

ClfsEncodeBlockPrivate函数将扇区最后2字节数据写入到签名缓冲区,然后使用生成的签名替换原有的2字节数据。

ClfsDecodeBlockjams调用ClfsDecodeBlockPrivate函数处理数据。

ClfsDecodeBlockPrivate函数将签名缓冲区数据写回扇区最后2字节,但缓冲区内的数据并未进行处理。

漏洞利用过程:

1、构造日志文件,使_CLFS_CONTAINER_CONTEXT结构的cidQueue字段值为-1,pCaontainer字段值为代码地址,签名缓冲区偏移指向pCaontainer所在地址。

2、调用CreateLogFile API打开已有的日志文件,此时会调用ClfsDecodeBlockPrivate函数,将签名缓冲区数据写回到扇区最后2字节。

3、当_CLFS_CONTAINER_CONTEXT结构的cidQueue字段值为-1时,会调用CClfsBaseFilePersisted::RemoveContainer函数。

4、RemoveContainer函数调用CClfsBaseFilePersisted::FlushImage函数将扇区最后2字节写入到pCaontainer字段。

5、当RemoveContainer函数调用完FlushImage函数后,pCaontainer值被替换为指定的代码地址,随后会将该地址作为虚表指针并调用相关函数。因为pCaontainer是可控的,因此可以执行任意构造的代码,从而实现权限提升。

Part5、修复建议

根据系统安装链接内相应补丁。

原文来源:安帝Andisec返回搜狐,查看更多



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有