
Repositorio para explotar CVE-2023-46604 reportado para ActiveMQ
Este repositorio es una guía con ejemplos sobre cómo explotar la CVE-2023-46604
El exploit aprovecha el uso de la reflexión para instanciar clases de Excepción a través de un comando malicioso que, en lugar de ser un comando válido, envía como clase de excepción una clase de Spring para cargar beans y como parámetro del constructor de cadena una URL desde donde descargar un archivo XML con las definiciones de Spring Bean.
Este Spring Bean es de hecho un java.lang.ProcessBuilder que ejecutará cualquier comando bash con los mismos permisos de usuario que los que ejecutan el cliente o servidor Java de Active MQ.
Desearía poder hacer la conexión HTTP en código Python, pero hasta donde he visto, el cargador de Spring Bean por alguna razón realiza dos llamadas HTTP y estoy más familiarizado con la programación multihilo en Java que en Python
Este exploit es para un cliente ActiveMQ que realiza una conexión a un servidor broker, que a su vez es un servidor malicioso que hará que este cliente sea vulnerable a la ejecución remota de código.
El exploit se divide en dos procesos:
Esto ha sido probado con Python 3.6 y Java 17
Compila el proyecto Java:
cd activemq-exploit
mvn clean package
Vuelve al proyecto raíz con cd .., y ejecuta python scripts/client_exploit.py
En otra terminal, ejecuta el código Java:
cd activemq-exploitjava -jar target/activemq-exploit-1.0-SNAPSHOT.jarEl exploit del servidor se conecta a un broker de servidor ActiveMQ y envía los comandos maliciosos. Esto solo se usó con ActiveMQ Artemis 2.18 y no pudo explotar la vulnerabilidad porque Artemis no está empaquetado con Spring, y el único exploit conocido para ejecución remota de código es a través de una clase de Spring para cargar Spring Beans.
Sin embargo, el script Python en scripts/server_exploit.py hace lo mismo que el exploit del cliente, solo que conectándose a un servidor.
Carece de autenticación, por lo que quizás sea necesaria una adaptación del handshake de Open Wire.