
Repository zur Ausnutzung des für ActiveMQ gemeldeten CVE-2023-46604
Dieses Repository ist ein Leitfaden mit Beispielen zur Ausnutzung der CVE-2023-46604
Der Exploit nutzt die Verwendung von Reflektion aus, um Exception-Klassen zu instanziieren, indem anstelle eines gültigen Befehls als Exception-Klasse eine Spring-Klasse zum Laden von Beans gesendet wird und als String-Konstruktorparameter eine URL, von der eine XML-Datei mit den Spring Bean-Definitionen heruntergeladen wird.
Diese Spring Bean ist tatsächlich ein java.lang.ProcessBuilder, der jeden Bash-Befehl mit denselben Benutzerberechtigungen ausführt wie derjenige, der den Java Active MQ-Client oder -Server ausführt.
Ich wünschte, ich könnte die HTTP-Verbindung in Python-Code herstellen, aber soweit ich gesehen habe, führt der Spring Bean-Loader aus irgendeinem Grund zwei HTTP-Aufrufe durch, und ich bin mit der Multithread-Programmierung in Java vertrauter als in Python
Dieser Exploit ist für einen ActiveMQ-Client, der eine Verbindung zu einem Broker-Server herstellt, der wiederum ein bösartiger Server ist, der diesen Client anfällig für Remote-Code-Ausführung macht.
Der Exploit ist in zwei Prozesse unterteilt:
Dies wurde mit Python 3.6 und Java 17 getestet.
Kompilieren des Java-Projekts:
cd activemq-exploit
mvn clean package
Gehen Sie mit cd .. zurück zum Stammprojekt und führen Sie python scripts/client_exploit.py aus.
Führen Sie in einem anderen Terminal den Java-Code aus:
cd activemq-exploitjava -jar target/activemq-exploit-1.0-SNAPSHOT.jarDer Server-Exploit verbindet sich mit einem ActiveMQ-Server-Broker und sendet die bösartigen Befehle. Dies wurde nur mit ActiveMQ Artemis 2.18 verwendet und konnte die Schwachstelle nicht ausnutzen, da Artemis nicht mit Spring gebündelt ist und der einzige bekannte Exploit für Remote-Code-Ausführung über eine Spring-Klasse zum Laden von Spring Beans erfolgt.
Das Python-Skript in scripts/server_exploit.py macht jedoch dasselbe wie der Client-Exploit, nur dass es sich mit einem Server verbindet.
Es fehlt die Authentifizierung, daher ist möglicherweise eine Anpassung des Open Wire-Handshakes erforderlich.