
Exploit pour CVE-2023-33246 ciblant Apache RocketMQ 5.1.0, permettant l'exécution de code à distance via l'injection de paquets forgés dans le point de terminaison de mise à jour de configuration du courtier.
[![Build Status][maven-build-image]][maven-build-url] [![CodeCov][codecov-image]][codecov-url] [![Maven Central][maven-central-image]][maven-central-url] [![Release][release-image]][release-url] [![License][license-image]][license-url] [![Average Time to Resolve An Issue][percentage-of-issues-still-open-image]][pencentage-of-issues-still-open-url] [![Percentage of Issues Still Open][average-time-to-resolve-an-issue-image]][average-time-to-resolve-an-issue-url] [![Twitter Follow][twitter-follow-image]][twitter-follow-url]
Apache RocketMQ est une plateforme de messagerie et de streaming distribuée avec une faible latence, des performances et une fiabilité élevées, une capacité au niveau du trillion et une évolutivité flexible.
Il offre une variété de fonctionnalités :
Ce paragraphe vous guide à travers les étapes d'installation de RocketMQ de différentes manières. Pour le développement et les tests locaux, une seule instance sera créée pour chaque composant.
RocketMQ fonctionne sur tous les principaux systèmes d'exploitation et nécessite seulement l'installation d'un JDK Java version 8 ou supérieure.
Pour vérifier, exécutez java -version :
$ java -version
java version "1.8.0_121"
Pour les utilisateurs Windows, cliquez ici pour télécharger la version binaire 4.9.4 de RocketMQ, décompressez-la sur votre disque local, par exemple D:\rocketmq.
Pour les utilisateurs macOS et Linux, exécutez les commandes suivantes :
# Download release from the Apache mirror
$ wget https://archive.apache.org/dist/rocketmq/4.9.4/rocketmq-all-4.9.4-bin-release.zip
# Unpack the release
$ unzip rocketmq-all-4.9.4-bin-release.zip
Préparez un terminal et placez-vous dans le répertoire bin extrait :
$ cd rocketmq-4.9.4/bin
1) Démarrer NameServer
NameServer écoutera sur 0.0.0.0:9876, assurez-vous que ce port n'est pas utilisé par d'autres sur la machine locale, puis procédez comme suit.
Pour les utilisateurs macOS et 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...
Pour les utilisateurs Windows, vous devez d'abord définir les variables d'environnement :
ROCKETMQ_HOME="D:\rocketmq".Ensuite, changez de répertoire pour accéder à rocketmq, tapez et exécutez :
$ mqnamesrv.cmd
The Name Server boot success...
2) Démarrer Broker
Pour les utilisateurs macOS et 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...
Pour les utilisateurs Windows :
$ mqbroker.cmd -n localhost:9876
The broker[broker-a, 192.169.1.2:10911] boot success...
Vous pouvez exécuter RocketMQ sur votre propre machine dans des conteneurs Docker,
le réseau host sera utilisé pour exposer le port d'écoute dans le conteneur.
1) Démarrer NameServer
$ docker run -it --net=host apache/rocketmq ./mqnamesrv
2) Démarrer Broker
$ docker run -it --net=host --mount source=/tmp/store,target=/home/rocketmq/store apache/rocketmq ./mqbroker -n localhost:9876
Vous pouvez également exécuter un cluster RocketMQ dans un cluster Kubernetes en utilisant RocketMQ Operator.
Avant vos opérations, assurez-vous que kubectl et le fichier kubeconfig associé sont installés sur votre machine.
1) Installer les 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) Créer une instance de cluster
### 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