Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2022-24481-analysis — Análise aprofundada da confusão de tipos no CLFS do Windows (CVE-2022-24481) com explicação da causa raiz, fluxo de exploração, detalhes de gadgets de kernel e PoC funcional de escalonamento local de privilégios. | Kitploit
Ferramentas/GitHubGitHub/uname1able/cve-2022-24481-analysis
Escalada de PrivilégiosAnálise de VulnerabilidadesExploraçãoEngenharia ReversaExploração de Binários
GitHubuname1able/cve-2022-24481-analysis

CVE-2022-24481-analysis

Análise aprofundada da confusão de tipos no CLFS do Windows (CVE-2022-24481) com explicação da causa raiz, fluxo de exploração, detalhes de gadgets de kernel e PoC funcional de escalonamento local de privilégios.

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Ver Repositório
6há 25 diasAinda não revisado

CVE-2022-24481 Type Confusion

Type confusion

Arquivo Vulnerável

clfs.sys

Causa Raiz

Como a lógica de validação para rgContainers[0] não é estrita, após forjar rgContainers[0], ClientContext se sobrepõe à estrutura ContainerContext. Se os dados falsificados forem aceitos, após CloseHandle, CClfsLogFcbPhysical::FlushMetadata restaura os dados de ClientContext.

Método de Exploração

Após forjar rgContainers[0], ClientContext se sobrepõe à estrutura ContainerContext. Se os dados falsificados forem aceitos, após CloseHandle, CClfsLogFcbPhysical::FlushMetadata restaura os dados de ClientContext. Como as estruturas se sobrepõem, esse processo altera ContainerContext->pContainer para os dados forjados. Finalmente, quando CClfsBaseFilePersisted::RemoveContainer é chamado, ele dispara uma chamada indireta de função-membro, executa um gadget específico e leva à elevação de privilégio.

Fluxo do PoC

1. Preparação Estática do Arquivo

createlog cria um novo arquivo de log.

Adicione uma entrada Container.

Crie um link simbólico X:\ que aponte para o diretório atual.

Limpe o intervalo cbSymbolName_start -> cbSymbolName_end.

Defina cbSymbolName_start como X:\N.

Copie os dados em ContainerContext_start -> New_cbSymbolName_end para ClientContext.

Atualize rgContainers[0] para que aponte para o novo local de ContainerContext_start.

Atualize o novo valor de ContainerContext->pContainer.

Recalcule a soma de verificação.

2. Preparação em Tempo de Execução

Localize o endereço do gadget na memória do kernel.

Construa a tabela virtual falsa.

Execute a configuração de memória restante.

3. Abrir o Arquivo de Log Forjado

CClfsLogFcbPhysical::Initialize

00000001C0002EDB armazena os dados de ClientContext.

Após CloseHandle, CClfsRequest::Cleanup->CClfsLogFcbPhysical::FlushMetadata é executado.

Ele copia os dados forjados de volta para ClientContext. Como ClientContext se sobrepõe a ContainerContext, ContainerContext->pContainer é sobrescrito com os dados forjados.

CClfsBaseFilePersisted::RemoveContainer então executa nosso gadget, resultando em uma escrita de 16 bytes em um endereço arbitrário.

Referências

https://zhuanlan.zhihu.com/p/645490730

https://github.com/fr4nkxixi/CVE-2022-24481-POC

https://securelist.com/windows-clfs-exploits-ransomware-cve-2022-24521/111580/

https://starmap.dbappsecurity.com.cn/blog/articles/2022/05/10/cve-2022-24481/

https://www.4awl.net/9646.html

Lista de Modificação de Dados

Pontos-Chave do Fluxo de Funções

win10_21H2_19044.1620

Rotina de inicialização CClfsLogFcbPhysical::Initialize(0x??7c) para abrir o arquivo

bp clfs!CClfsLogFcbPhysical::Initialize + 0x45F

Este código armazena a memória de ClientContext.

Após CloseHandle, CClfsRequest::Cleanup->CClfsLogFcbPhysical::FlushMetadata é executado.

bp clfs!CClfsLogFcbPhysical::FlushMetadata + 0x46

Isso restaura os dados de ClientContext.

CClfsBaseFilePersisted::RemoveContainer

bp clfs!CClfsBaseFilePersisted::RemoveContainer + 0x10F

Use o ponteiro da tabela virtual forjada para alcançar o gadget.

Observe que, se o arquivo forjado falhar, a abertura do arquivo falhará e GetLastError revelará o motivo. Nesse caso, o fluxo de exploração não pode continuar.

Gadget

CClfsBaseFilePersisted::RemoveContainer

CLFS!ClfsEarlierLsn

nt!SeSetAccessStateGenericMapping

nt!SeSetAccessStateGenericMapping

movdqu xmmword ptr [rax+8], xmm0 grava 16 bytes em [rax+8] (XMMWORD, 128 bits).

Após a execução sequencial, o resultado é gravar os dados de 16 bytes de poi(rdx) 0xFFFFFFFF em poi(poi(rcx+0x48)+0x8).

rcx é o local do ponteiro da tabela virtual, e esse local está sob nosso controle.

PoC Implementado

https://github.com/uname1able/CVE-2022-24481.git

PoC para Win10

winver

win10_21H2_19044.1620

bp clfs!CClfsBaseFilePersisted::RemoveContainer + 0x10F

PoC para Win11

winver

win11_21H2_22000.593

bp clfs!CClfsBaseFilePersisted::RemoveContainer + 0x183

Baixar ferramenta