CVE-2022-24481-POC
TL;DR
此POC是从exp(SHA1:fec933b0c46366a1fb272bfaf82a8262597a8d75)逆向而来,许多AV引擎将其检测为CVE-2022-24521。经过分析后,我发现它可能是CVE-2022-24481的exp,因为CVE-2022-24521并非类型混淆漏洞。
该漏洞由CLFS_CONTAINER_CONTEXT.pContainer指针的错误引起,它会在函数CClfsContainer::Close中被调用,因此如果在此之前被修改,将会执行任意代码。但如何修改这个指针呢?
exp(fec933b0c46366a1fb272bfaf82a8262597a8d75)的RCA如下:
- exp将CLFS_BASE_RECORD_HEADER.rgClients修改为CLFS_CONTAINER_CONTEXT的偏移量。
- 在函数CClfsLogFcbPhysical::Initialize中,从CLFS_BASE_RECORD_HEADER.rgClients(即CLFS_CONTAINER_CONTEXT的偏移量)读取某些值到内存。
- CClfsBaseFilePersisted::LoadContainerQ将生成Container类的指针,并填入CLFS_CONTAINER_CONTEXT.pContainer。
- 在函数CClfsRequest::Cleanup中,将步骤2中的值写入客户端上下文,该上下文在内存中与容器上下文相同。
- 在函数CClfsRequest::Close中,解析CLFS_CONTAINER_CONTEXT并调用pContainer(触发)。