Remote Template Injection
A técica de Remote Template Injection permite a execução de macros em arquivos .docx sem que a macro seja carregada e enviada junto ao arquivo. Ao invés disso, o documento aberto baixa um template específico que contém a macro que queremos que seja executado.
A criação do documento malicioso acontece dessa forma:
Criação de um arquivo
.dotmcom a macro para ser executada e hospede em um servidor;Crie um arquivo
.docxqualquer;Renomeie o arquivo de
.docxpara.zip, e extraia o arquivo.zip;Edite o parâmetro
Targetem./world/_rels/settins.xml.relse coloque o endereço onde se encontra o template com a macro;Compacte todos os arquivos para um
.zipnovamente (todos os arquivos, não a pasta raiz) e renomeie para.docxnovamente
Exemplo Prático
Criação do template
Crie um documento word comum:

Vá em Exibir > Macros > Exibir Macros, ou aperte Alt + F8 para abrir o editor de macros:

Importante a configuração ser de Macros em apenas esse documento:

De um nome qualquer a sua macro e clique em criar, onde seremos enviados para o editor da macro. Para testar se a macro irá funcionar, a primeira payload pode ser algo simples, como abrir uma calculadora ou notepad, com um código dessa forma:
Podemos criar duas funções com que farão que nossa macro seja executada assim que o arquivo for aberto, sendo essas funções Document_Open() e AutoOpen(), nossa macro final ficaria parecida com isso:

Podemos clicar no botão de play ou apertar F5 para testar nossa macro, se a calculadora abrir, é por que está funcionando:

Agora podemos salvar o arquivo em uma pasta de sua preferência, com a extensão .dotm:

Agora equipados com o template, vamos hospedar em um webserver.
Servindo o template
Várias maneiras podem ser utilizadas para disponibilizar esse template para download, como Ngrok, um servidor dedicado, uma VPS e etc. No caso desse laboratório, estou utilizando o servidor HTTP do python na minha máquina Linux para servir o arquivo que está na mesma rede do Windows. Envie seu template para seu servidor e o deixe disponível:

Com isso, o template está pronto para ser baixado, vamos criar o arquivo docx.
Criação do arquivo docx
Para isso, crie um documento word escolhendo um template qualquer, nesse exemplo, escolhi o currículo, em cenários reais é importante editar o documento para ser convincente o suficiente, no laboratório isso não importa tanto.

E somente isso, já podemos salvar o arquivo como arquivo .docx para continuar com as outras etapas. Mude o arquivo de .docx para .zip e descompacte:

Entre na pasta ./word/_rels e edite o arquivo settings.xml.rels, nele, procure pelo parâmetro Target e coloque o endereço do servidor que está hospedando seu template malicioso:

Agora só salvar esse arquivo e zipar todos os arquivos dentro da raiz novamente:

Renomeie o .zip para .docx e teremos um arquivo Word válido que carregará nossa macro.
Executando a prova de conceito
Chegou a hora de testar nosso projeto, comece abrindo o documento, isso deverá baixar nosso template no servidor linux:

O documento foi aberto com um aviso de macro a ser executada, e se olharmos no nosso servidor linux, poderemos ver os logs do download do template:

Confirmamos então que essa etapa funcionou, vamos permitir a macro e conferir se a calculadora será aberta:

E nossa macro funcionou! A prova de conceito funcionou, então podemos evoluir.
Reverse Shell
Last updated