
Repositório para explorar o CVE-2023-46604 reportado para o ActiveMQ
Este repositório é um guia com exemplos de como explorar o CVE-2023-46604
O exploit aproveita o uso de reflexão para instanciar classes de Exceção por meio de um comando malicioso que, em vez de ser um comando válido, envia como classe de exceção uma classe Spring para carregar beans e, como parâmetro do construtor de string, uma URL de onde baixar um arquivo XML com as definições de Spring Bean.
Esse Spring Bean é, na verdade, um java.lang.ProcessBuilder que executará qualquer comando bash com as mesmas permissões de usuário daquele
que está executando o cliente ou servidor Java Active MQ.
Eu gostaria de conseguir fazer a conexão HTTP em código Python, mas pelo que vi, o carregador de Spring Bean, por algum motivo, faz duas chamadas HTTP e estou mais familiarizado com programação multithread em Java do que em Python
Este exploit é para um cliente ActiveMQ que faz uma conexão com um broker server, que, por sua vez, é um servidor malicioso que tornará esse cliente vulnerável à execução remota de código.
O exploit é dividido em dois processos:
Isto foi testado com Python 3.6 e Java 17
Compile o projeto Java:
cd activemq-exploit
mvn clean package
Volte para o projeto raiz com cd .. e execute python scripts/client_exploit.py
Em outro terminal, execute o código Java:
cd activemq-exploitjava -jar target/activemq-exploit-1.0-SNAPSHOT.jarO exploit no servidor conecta-se a um broker do ActiveMQ e envia os comandos maliciosos. Isto foi usado apenas com o ActiveMQ Artemis 2.18 e não foi possível explorar a vulnerabilidade porque o Artemis não é empacotado com Spring, e o único exploit conhecido para execução remota de código é por meio de uma classe Spring para carregar Spring Beans.
No entanto, o script Python em scripts/server_exploit.py faz o mesmo que o exploit no cliente, apenas conectando-se a um servidor.
Ele não possui autenticação, então talvez seja necessária uma adaptação do handshake Open Wire.