AWS - MSK Enum

Erlernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Amazon MSK

Amazon Managed Streaming for Apache Kafka (Amazon MSK) ist ein vollständig verwalteter Dienst, der die Entwicklung und Ausführung von Anwendungen zur Verarbeitung von Streaming-Daten über Apache Kafka erleichtert. Amazon MSK bietet Control-Plane-Operationen, einschließlich Erstellung, Aktualisierung und Löschung von Clustern. Der Dienst ermöglicht die Nutzung von Apache Kafka Data-Plane-Operationen, die Datenproduktion und -konsumption umfassen. Er arbeitet mit Open-Source-Versionen von Apache Kafka, die die Kompatibilität mit vorhandenen Anwendungen, Tools und Plugins sowohl von Partnern als auch von der Apache Kafka-Community sicherstellen und so die Notwendigkeit von Änderungen im Anwendungscode beseitigen.

In Bezug auf die Zuverlässigkeit ist Amazon MSK darauf ausgelegt, automatisch häufig auftretende Cluster-Ausfallszenarien zu erkennen und wiederherzustellen, um sicherzustellen, dass Produzenten- und Konsumentenanwendungen ihre Daten schreib- und leseaktivitäten mit minimalen Unterbrechungen fortsetzen. Darüber hinaus zielt es darauf ab, die Datenreplikationsprozesse zu optimieren, indem es versucht, den Speicher der ersetzten Broker wiederzuverwenden, um so das Volumen der von Apache Kafka replizierten Daten zu minimieren.

Typen

Es gibt 2 Arten von Kafka-Clustern, die AWS erstellen kann: Bereitgestellt und Serverless.

Aus der Sicht eines Angreifers müssen Sie wissen, dass:

  • Serverless kann nicht direkt öffentlich zugänglich sein (es kann nur in einem VPN ohne öffentlich zugängliche IP-Adresse ausgeführt werden). Bereitgestellt kann jedoch so konfiguriert werden, dass es eine öffentliche IP-Adresse erhält (standardmäßig nicht) und das Sicherheitsgruppe konfiguriert, um die relevanten Ports freizugeben.

  • Serverless unterstützt nur IAM als Authentifizierungsmethode. Bereitgestellt unterstützt SASL/SCRAM (Passwort) Authentifizierung, IAM-Authentifizierung, AWS Certificate Manager (ACM) Authentifizierung und Unauthentifizierten Zugriff.

  • Beachten Sie, dass es nicht möglich ist, einen bereitgestellten Kafka öffentlich zugänglich zu machen, wenn unauthentifizierter Zugriff aktiviert ist.

Enumeration

#Get clusters
aws kafka list-clusters
aws kafka list-clusters-v2

# Check the supported authentication
aws kafka list-clusters |  jq -r ".ClusterInfoList[].ClientAuthentication"

# Get Zookeeper endpoints
aws kafka list-clusters | jq -r ".ClusterInfoList[].ZookeeperConnectString, .ClusterInfoList[].ZookeeperConnectStringTls"

# Get nodes and node enspoints
aws kafka kafka list-nodes --cluster-arn <cluster-arn>
aws kafka kafka list-nodes --cluster-arn <cluster-arn> | jq -r ".NodeInfoList[].BrokerNodeInfo.Endpoints" # Get endpoints

# Get used kafka configs
aws kafka list-configurations #Get Kafka config file
aws kafka describe-configuration --arn <config-arn> # Get version of config
aws kafka describe-configuration-revision --arn <config-arn> --revision <version> # Get content of config version

# If using SCRAN authentication, get used AWS secret name (not secret value)
aws kafka list-scram-secrets --cluster-arn <cluster-arn>

Kafka IAM-Zugriff (in serverless)

# Guide from https://docs.aws.amazon.com/msk/latest/developerguide/create-serverless-cluster.html
# Download Kafka
wget https://archive.apache.org/dist/kafka/2.8.1/kafka_2.12-2.8.1.tgz
tar -xzf kafka_2.12-2.8.1.tgz

# In kafka_2.12-2.8.1/libs download the MSK IAM JAR file.
cd kafka_2.12-2.8.1/libs
wget https://github.com/aws/aws-msk-iam-auth/releases/download/v1.1.1/aws-msk-iam-auth-1.1.1-all.jar

# Create file client.properties in kafka_2.12-2.8.1/bin
security.protocol=SASL_SSL
sasl.mechanism=AWS_MSK_IAM
sasl.jaas.config=software.amazon.msk.auth.iam.IAMLoginModule required;
sasl.client.callback.handler.class=software.amazon.msk.auth.iam.IAMClientCallbackHandler

# Export endpoints address
export BS=boot-ok2ngypz.c2.kafka-serverless.us-east-1.amazonaws.com:9098
## Make sure you will be able to access the port 9098 from the EC2 instance (check VPS, subnets and SG)

# Create a topic called msk-serverless-tutorial
kafka_2.12-2.8.1/bin/kafka-topics.sh --bootstrap-server $BS --command-config client.properties --create --topic msk-serverless-tutorial --partitions 6

# Send message of every new line
kafka_2.12-2.8.1/bin/kafka-console-producer.sh --broker-list $BS --producer.config client.properties --topic msk-serverless-tutorial

# Read messages
kafka_2.12-2.8.1/bin/kafka-console-consumer.sh --bootstrap-server $BS --consumer.config client.properties --topic msk-serverless-tutorial --from-beginning

Privilege Escalation

pageAWS - MSK Privesc

Nicht authentifizierter Zugriff

pageAWS - MSK Unauthenticated Enum

Persistenz

Wenn Sie Zugriff auf das VPC haben, in dem ein bereitgestelltes Kafka ist, könnten Sie unberechtigten Zugriff aktivieren, wenn SASL/SCRAM-Authentifizierung verwendet wird, das Passwort aus dem Geheimnis lesen, einigen anderen gesteuerten Benutzern IAM-Berechtigungen geben (falls IAM oder serverless verwendet wird) oder mit Zertifikaten persistieren.

Referenzen

Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Last updated