
Exploit para CVE-2023-37582 dirigido a Apache RocketMQ, una plataforma de mensajería distribuida con baja latencia, alto rendimiento y soporte para mensajería transaccional, autenticación y cifrado.
Apache RocketMQ es una plataforma distribuida de mensajería y streaming con baja latencia, alto rendimiento y fiabilidad, capacidad a nivel de billones y escalabilidad flexible.
Ofrece una variedad de características:
Este párrafo te guía a través de los pasos para instalar RocketMQ de diferentes formas. Para el desarrollo y las pruebas locales, solo se creará una instancia de cada componente.
RocketMQ se ejecuta en todos los sistemas operativos principales y solo requiere que esté instalado un JDK de Java versión 8 o superior.
Para comprobarlo, ejecuta java -version:
$ java -version
java version "1.8.0_121"
Para usuarios de Windows, haz clic aquí para descargar la versión binaria 4.9.3 de RocketMQ,
descomprímela en tu disco local, por ejemplo D:\rocketmq.
Para usuarios de macOS y Linux, ejecuta los siguientes comandos:
# Download release from the Apache mirror
$ wget https://archive.apache.org/dist/rocketmq/4.9.3/rocketmq-all-4.9.3-bin-release.zip
# Unpack the release
$ unzip rocketmq-all-4.9.3-bin-release.zip
Prepara una terminal y accede al directorio bin extraído:
$ cd rocketmq-4.9.3/bin
1) Iniciar NameServer
NameServer escuchará en 0.0.0.0:9876; asegúrate de que el puerto no lo esté usando otro proceso en la máquina local y, a continuación, haz lo siguiente.
Para usuarios de macOS y Linux:
### start Name Server
$ nohup sh mqnamesrv &
### check whether Name Server is successfully started
$ tail -f ~/logs/rocketmqlogs/namesrv.log
The Name Server boot success...
Para usuarios de Windows, primero debes configurar las variables de entorno:
ROCKETMQ_HOME="D:\rocketmq".Luego cambia al directorio de rocketmq, escribe y ejecuta:
$ mqnamesrv.cmd
The Name Server boot success...
2) Iniciar Broker
Para usuarios de macOS y Linux:
### start Broker
$ nohup sh bin/mqbroker -n localhost:9876 &
### check whether Broker is successfully started, eg: Broker's IP is 192.168.1.2, Broker's name is broker-a
$ tail -f ~/logs/rocketmqlogs/broker.log
The broker[broker-a, 192.169.1.2:10911] boot success...
Para usuarios de Windows:
$ mqbroker.cmd -n localhost:9876
The broker[broker-a, 192.169.1.2:10911] boot success...
Puedes ejecutar RocketMQ en tu propia máquina dentro de contenedores Docker;
se utilizará la red host para exponer el puerto de escucha en el contenedor.
1) Iniciar NameServer
$ docker run -it --net=host apache/rocketmq ./mqnamesrv
2) Iniciar Broker
$ docker run -it --net=host --mount source=/tmp/store,target=/home/rocketmq/store apache/rocketmq ./mqbroker -n localhost:9876
También puedes ejecutar un clúster de RocketMQ dentro de un clúster de Kubernetes utilizando RocketMQ Operator.
Antes de comenzar, asegúrate de que kubectl y el archivo kubeconfig correspondiente estén instalados en tu máquina.
1) Instalar CRDs
### install CRDs
$ git clone https://github.com/apache/rocketmq-operator
$ cd rocketmq-operator && make deploy
### check whether CRDs is successfully installed
$ kubectl get crd | grep rocketmq.apache.org
brokers.rocketmq.apache.org 2022-05-12T09:23:18Z
consoles.rocketmq.apache.org 2022-05-12T09:23:19Z
nameservices.rocketmq.apache.org 2022-05-12T09:23:18Z
topictransfers.rocketmq.apache.org 2022-05-12T09:23:19Z
### check whether operator is running
$ kubectl get pods | grep rocketmq-operator
rocketmq-operator-6f65c77c49-8hwmj 1/1 Running 0 93s
2) Crear la instancia del clúster
### create RocketMQ cluster resource
$ cd example && kubectl create -f rocketmq_v1alpha1_rocketmq_cluster.yaml
### check whether cluster resources is running
$ kubectl get sts
NAME READY AGE
broker-0-master 1/1 107m
broker-0-replica-1 1/1 107m
name-service 1/1 107m