
Repository per sfruttare CVE-2023-46604 segnalato per ActiveMQ
Questo repository è una guida con esempi su come sfruttare la CVE-2023-46604
L'exploit sfrutta l'uso della reflection per istanziare classi Exception attraverso un comando malevolo che, anziché essere un comando valido, invia come classe di eccezione una classe Spring per caricare bean e come parametro del costruttore stringa un URL da cui scaricare un file XML con le definizioni dei Spring Bean.
Questo Spring Bean è in realtà un java.lang.ProcessBuilder che eseguirà qualsiasi comando bash con gli stessi permessi utente di chi sta eseguendo il client o server Java Active MQ.
Desidererei poter fare la connessione HTTP in codice Python, ma per quanto ho visto, il caricatore di Spring Bean per qualche motivo effettua due chiamate HTTP e sono più familiare con la programmazione multithread in Java che in Python
Questo exploit è per un client ActiveMQ che effettua una connessione a un server broker, che a sua volta è un server malevolo che renderà questo cliente vulnerabile all'esecuzione remota di codice.
L'exploit è suddiviso in due processi:
Questo è stato testato con Python 3.6 e Java 17
Compila il progetto Java:
cd activemq-exploit
mvn clean package
Torna al progetto principale con cd .., ed esegui python scripts/client_exploit.py
Su un altro terminale, esegui il codice Java:
cd activemq-exploitjava -jar target/activemq-exploit-1.0-SNAPSHOT.jarL'exploit server si connette a un broker server ActiveMQ e invia i comandi malevoli. Questo è stato utilizzato solo con ActiveMQ Artemis 2.18 e non è stato in grado di sfruttare la vulnerabilità perché Artemis non è pacchettizzato con Spring, e l'unico exploit conosciuto per l'esecuzione remota di codice è attraverso una classe Spring per caricare Spring Beans.
Tuttavia, lo script Python in scripts/server_exploit.py fa la stessa cosa dell'exploit client, solo che si connette a un server.
Manca di autenticazione, quindi forse è necessario un adattamento dell'handshake Open Wire.