
Exploit per Apache RocketMQ RCE (CVE-2023-33246) che esegue comandi arbitrari tramite la funzione di aggiornamento della configurazione, con configurazione dell'ambiente ed esempi di utilizzo.
Apache RocketMQ è una delle piattaforme di messaggistica e streaming distribuite più popolari e ampiamente utilizzate. Recentemente è stata segnalata una vulnerabilità di esecuzione di comandi in Apache RocketMQ che interessa la versione 5.1.0 e precedenti. Un utente remoto non autenticato può sfruttare questa vulnerabilità utilizzando la funzione di aggiornamento della configurazione per eseguire comandi con lo stesso livello di accesso del processo utente di RocketMQ.
Il nameserver in RocketMQ funge da registro o archivio di metadati per l'intera infrastruttura di messaggistica.
Mantiene informazioni su topic, code e i broker responsabili della gestione dei messaggi.
I client (produttori e consumatori) utilizzano il nameserver per scoprire i broker con cui comunicare per pubblicare o consumare messaggi.
Il nameserver è responsabile del routing dinamico, del bilanciamento del carico e del failover all'interno del cluster RocketMQ.
Ascolta su una porta specifica (solitamente la porta 9876 di default) per le richieste in arrivo da client e broker.
I broker sono i cavalli di battaglia del sistema RocketMQ, responsabili dell'archiviazione e della gestione dei messaggi.
Ogni broker gestisce uno o più topic, che sono canali logici per la comunicazione dei messaggi.
I produttori pubblicano messaggi su topic specifici, e i consumatori si iscrivono ai topic per ricevere messaggi.
I broker gestiscono l'archiviazione, la replica e la consegna dei messaggi ai consumatori in base alle sottoscrizioni e ai modelli di consumo dei messaggi.
Mantengono code di messaggi per ogni partizione del topic, garantendo un'elaborazione e una consegna efficienti dei messaggi.
I broker comunicano con i nameserver per registrarsi, aggiornare i metadati e partecipare ai meccanismi di routing e bilanciamento del carico del cluster.
Configura l'ambiente locale di RocketMQ tramite Docker
docker pull apache/rocketmq:4.9.4
### Start nameserver
docker run -d --name rmqnamesrv -p 9876:9876 apache/rocketmq:4.9.4 sh mqnamesrv
### Start Broker
docker run -d --name rmqbroker --link rmqnamesrv:namesrv -e "NAMESRV_ADDR=namesrv:9876" -p 10909:10909 -p 10911:10911 -p 10912:10912 apache/rocketmq:4.9.4 sh mqbroker -c /home/rocketmq/rocketmq-4.9.4/conf/broker.conf
python3 check.py --ip 127.0.0.1 --port 9876

PCAP

La funzione UpdateBrokerConfig() viene attivata quando viene ricevuta una richiesta con codice '25', che è associato a RequestCode
python3 CVE-2023-33246_RocketMQ_RCE_EXPLOIT.py 127.0.0.1 10911 curl 127.0.0.1/exp

PCAP

Utilizziamo la configurazione del server "rocketmqHome" presente nel file broker.conf. Questa configurazione imposta il valore della variabile d'ambiente ROCKETMQ_HOME all'interno del processo utente di RocketMQ. Attraverso un'attenta elaborazione di questo valore, possiamo eseguire comandi a nostra scelta.

ecco come funziona questa vulnerabilità..