AWS - MSK Enum
Reading time: 5 minutes
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
Amazon MSK
Amazon Managed Streaming for Apache Kafka (Amazon MSK) ist ein vollständig verwalteter Dienst, der die Entwicklung und Ausführung von Anwendungen erleichtert, die Streaming-Daten über Apache Kafka verarbeiten. Die Steuerungsebene, einschließlich Erstellung, Aktualisierung und Löschung von Clustern, wird von Amazon MSK angeboten. Der Dienst ermöglicht die Nutzung von Apache Kafka Datenebene-Operationen, die die Datenproduktion und -konsumtion umfassen. Er basiert auf Open-Source-Versionen von Apache Kafka, was die Kompatibilität mit bestehenden Anwendungen, Tools und Plugins sowohl von Partnern als auch aus der Apache Kafka-Community sicherstellt, ohne dass Änderungen am Anwendungscode erforderlich sind.
In Bezug auf die Zuverlässigkeit ist Amazon MSK so konzipiert, dass es automatisch häufige Clusterfehler-Szenarien erkennt und sich davon erholt, sodass Produzenten- und Konsumenten-Anwendungen ihre Daten Schreib- und Leseaktivitäten mit minimalen Unterbrechungen fortsetzen können. Darüber hinaus zielt es darauf ab, die Datenreplikationsprozesse zu optimieren, indem versucht wird, den Speicher von ersetzten Brokern wiederzuverwenden, wodurch das Volumen der Daten, die von Apache Kafka repliziert werden müssen, minimiert wird.
Typen
Es gibt 2 Arten von Kafka-Clustern, die AWS erstellen lässt: Provisioned und Serverless.
Aus der Sicht eines Angreifers müssen Sie wissen, dass:
- Serverless kann nicht direkt öffentlich sein (es kann nur in einem VPN ohne öffentlich exponierte IP ausgeführt werden). Provisioned kann jedoch so konfiguriert werden, dass es eine öffentliche IP erhält (standardmäßig geschieht dies nicht) und die Sicherheitsgruppe so konfiguriert wird, dass die relevanten Ports exponiert werden.
- Serverless unterstützt nur IAM als Authentifizierungsmethode. Provisioned unterstützt SASL/SCRAM (Passwort) Authentifizierung, IAM Authentifizierung, AWS Zertifikat Manager (ACM) Authentifizierung und unauthentifizierten Zugriff.
- Beachten Sie, dass es nicht möglich ist, ein Provisioned Kafka öffentlich zugänglich zu machen, wenn der unauthentifizierte 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 serverlos)
# 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
Privesc
Unauthenticated Access
AWS - MSK Unauthenticated Enum
Persistence
Wenn Sie Zugriff auf das VPC haben, in dem ein Provisioned Kafka ist, könnten Sie unauthorisierten Zugriff aktivieren, wenn SASL/SCRAM-Authentifizierung, das Passwort aus dem Geheimnis lesen, einigen anderen kontrollierten Benutzern IAM-Berechtigungen geben (wenn IAM oder serverless verwendet wird) oder mit Zertifikaten persistieren.
References
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.