
Microsoft-Office-Word-MSHTML-Remote-Code-Execution-Exploit
Gerador de docx malicioso para explorar CVE-2021-40444 (Execução Remota de Código no Microsoft Office Word), funciona com arquivos DLL arbitrários.
Embora muitos PoCs já estejam espalhados pela internet, resolvi tentar armar esta vulnerabilidade, pois o que encontrei disponível carecia de informações valiosas que valessem a pena compartilhar, considerando também que a Microsoft já lançou uma correção para esta vulnerabilidade.
Até agora, os únicos recursos valiosos que vi para criar um gerador totalmente funcional são:
Os recursos acima descrevem muitos dos requisitos necessários para criar uma cadeia completa. Para evitar repetir muitas informações desnecessárias, vou apenas resumir os detalhes relevantes.
Existem vários requisitos ignorados para que esta exploração funcione, o que fez com que até mesmo bons PoCs, como o do lockedbyte, falhassem.
Talvez ninguém tenha "lançado" explicitamente para evitar que a vulnerabilidade fosse mais explorada. Mas agora está corrigida, então não deve causar muitos problemas divulgar os detalhes.
Conforme este tweet de Will Dormann, o HTML deve ter pelo menos 4096 bytes de tamanho para acionar a "Pré-visualização" dentro do MS Word.
O arquivo CAB precisa ser corrigido em nível de byte para evitar erros de extração e conseguir o ZipSlip:
filename.inf deve se tornar ../filename.inffilename.inf coffCabStartCFFOLDER.typeCompress CFFOLDER.coffCabStart deve ser aumentado em 3 (devido ao '../' adicionado)CFFOLDER.cCfData CFFILE.cbFile deve ser maior do que todo o CFHEADER.cbCabinetCFDATA.csum A razão para essas restrições são muitas, e não gastei tempo suficiente para entender profundamente todas, mas vamos ver as mais importantes:
NOTA1: O Defender agora detecta se o arquivo CAB contém um PE usando o valor _IMAGE_DOS_HEADER.e_magic como assinatura, potencialmente evitando que arquivos PE sejam incorporados no CAB. Essa assinatura pode ser contornada? Não tenho certeza, mas, como observado antes, esta é uma vulnerabilidade corrigida, então não pretendo investir muito mais tempo nisso. Fica a cargo do leitor curioso desenvolver isso mais.
NOTA2: O patch da Microsoft bloqueia esquemas de URI arbitrários, aparentemente usando uma abordagem de lista negra (isso é apenas uma suposição)
A principal cadeia de ataque associada ao CVE-2021-40444 é o ataque DLL carregado via esquema de URI .cpl. Para explorar isso, um invasor precisa gerar um DLL especialmente criado. Se quiser testar, experimente meu script evildll-gen.
Conforme observado por Max Maluin, é possível interagir com vários tipos de arquivo abusando do IE e do URI baseado na extensão de arquivo associada. Embora isso possa ser uma boa maneira de explorar o IE, tem limitações.
De fato, deve-se notar que o método usado na exploração para baixar arquivos é baseado em atualizações de controle ActiveX e não pode ser usado para baixar arquivos arbitrários.
Segundo a documentação da Microsoft, a tag codebase pode apontar apenas para alguns tipos de arquivo: OCX, INF e CAB.
Mesmo que possamos baixar diretamente um arquivo OCX ou INF, ainda não podemos ter certeza de baixar o arquivo no local correto dentro do sistema. Com a exploração do cab, é possível mover o arquivo .inf para um caminho conhecido usando o path traversal, mas em qualquer outro caso o arquivo será armazenado em um diretório aleatório, tornando praticamente impossível referenciá-lo.
Até hoje, não encontrei uma maneira de encadear download e execução SEM um arquivo CAB.
Nota: Falando apenas do IE, o contrabando de HTML (HTML smuggling) poderia ser um cenário possível para explorar a vulnerabilidade.
Esta técnica foi divulgada primeiramente por Eduardo Braun no Twitter e explicada posteriormente neste artigo.
Observe que, usando esta técnica, a cadeia de ataque é um pouco diferente. Este ataque exige que o usuário baixe um arquivo RAR especialmente criado, obtido encadeando um script WSF válido e um arquivo RAR válido. Uma vez aberto, o RAR conterá um DOCX com referência a um HTML, que por sua vez tentará carregar o arquivo RAR como um script WSF.
Para resumir:
O utilitário gerador pode atualmente reproduzir os seguintes ataques: