
Exploit für CVE-2023-33246, der auf Apache RocketMQ 5.1.0 abzielt und eine Remote-Codeausführung durch gezielte Paketinjektion in den Update-Konfigurationsendpunkt des Brokers ermöglicht.
[![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 ist eine verteilte Messaging- und Streaming-Plattform mit niedriger Latenz, hoher Leistung und Zuverlässigkeit, Billionen-Level-Kapazität und flexibler Skalierbarkeit.
Sie bietet eine Vielzahl von Funktionen:
Dieser Abschnitt führt Sie durch die Installation von RocketMQ auf verschiedene Weise. Für lokale Entwicklung und Tests wird für jede Komponente nur eine Instanz erstellt.
RocketMQ läuft auf allen gängigen Betriebssystemen und erfordert nur eine installierte Java JDK Version 8 oder höher.
Zur Überprüfung führen Sie java -version aus:
$ java -version
java version "1.8.0_121"
Für Windows-Benutzer klicken Sie hier um das RocketMQ 4.9.4 Binärrelease herunterzuladen,
entpacken Sie es auf Ihre lokale Festplatte, z.B. D:\rocketmq.
Für macOS- und Linux-Benutzer führen Sie die folgenden Befehle aus:
# Release vom Apache-Mirror herunterladen
$ wget https://archive.apache.org/dist/rocketmq/4.9.4/rocketmq-all-4.9.4-bin-release.zip
# Release entpacken
$ unzip rocketmq-all-4.9.4-bin-release.zip
Bereiten Sie ein Terminal vor und wechseln Sie in das extrahierte bin-Verzeichnis:
$ cd rocketmq-4.9.4/bin
1) NameServer starten
Der NameServer hört auf 0.0.0.0:9876. Stellen Sie sicher, dass der Port auf dem lokalen Rechner nicht von anderen verwendet wird, und gehen Sie dann wie folgt vor.
Für macOS- und Linux-Benutzer:
### Name Server starten
$ nohup sh mqnamesrv &
### Überprüfen, ob der Name Server erfolgreich gestartet wurde
$ tail -f ~/logs/rocketmqlogs/namesrv.log
The Name Server boot success...
Für Windows-Benutzer müssen Sie zuerst Umgebungsvariablen setzen:
ROCKETMQ_HOME="D:\rocketmq" hinzu.Wechseln Sie dann in das Verzeichnis rocketmq und geben Sie ein und führen Sie aus:
$ mqnamesrv.cmd
The Name Server boot success...
2) Broker starten
Für macOS- und Linux-Benutzer:
### Broker starten
$ nohup sh bin/mqbroker -n localhost:9876 &
### Überprüfen, ob der Broker erfolgreich gestartet wurde, z.B.: Broker-IP ist 192.168.1.2, Broker-Name ist broker-a
$ tail -f ~/logs/rocketmqlogs/broker.log
The broker[broker-a, 192.169.1.2:10911] boot success...
Für Windows-Benutzer:
$ mqbroker.cmd -n localhost:9876
The broker[broker-a, 192.169.1.2:10911] boot success...
Sie können RocketMQ auf Ihrem eigenen Rechner in Docker-Containern ausführen.
Es wird das host-Netzwerk verwendet, um den Listener-Port im Container freizugeben.
1) NameServer starten
$ docker run -it --net=host apache/rocketmq ./mqnamesrv
2) Broker starten
$ docker run -it --net=host --mount source=/tmp/store,target=/home/rocketmq/store apache/rocketmq ./mqbroker -n localhost:9876
Sie können auch einen RocketMQ-Cluster innerhalb eines Kubernetes-Clusters mit RocketMQ Operator ausführen.
Stellen Sie vor Ihren Operationen sicher, dass kubectl und die dazugehörige kubeconfig-Datei auf Ihrem Rechner installiert sind.
1) CRDs installieren
### CRDs installieren
$ git clone https://github.com/apache/rocketmq-operator
$ cd rocketmq-operator && make deploy
### Überprüfen, ob die CRDs erfolgreich installiert wurden
$ 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
### Überprüfen, ob der Operator läuft
$ kubectl get pods | grep rocketmq-operator
rocketmq-operator-6f65c77c49-8hwmj 1/1 Running 0 93s
2) Cluster-Instanz erstellen
### RocketMQ-Cluster-Ressource erstellen
$ cd example && kubectl create -f rocketmq_v1alpha1_rocketmq_cluster.yaml
### Überprüfen, ob die Cluster-Ressourcen laufen
$ kubectl get sts
NAME READY AGE
broker-0-master 1/1 107m
broker-0-replica-1 1/1 107m
name-service 1/1 107m