AWS - MSK Enum

Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Άλλοι τρόποι για να υποστηρίξετε το HackTricks:

Amazon MSK

Το Amazon Managed Streaming for Apache Kafka (Amazon MSK) είναι ένα υπηρεσία πλήρως διαχειριζόμενη που διευκολύνει την ανάπτυξη και εκτέλεση εφαρμογών που επεξεργάζονται δεδομένα ροής μέσω του Apache Kafka. Οι λειτουργίες ελέγχου του ελέγχου, συμπεριλαμβανομένης της δημιουργίας, ενημέρωσης και διαγραφής των clusters, προσφέρονται από το Amazon MSK. Η υπηρεσία επιτρέπει τη χρήση λειτουργιών data-plane του Apache Kafka, περιλαμβάνοντας την παραγωγή και κατανάλωση δεδομένων. Λειτουργεί με ανοιχτούς κώδικα εκδόσεις του Apache Kafka, εξασφαλίζοντας συμβατότητα με υπάρχουσες εφαρμογές, εργαλεία και πρόσθετα από εταίρους και την κοινότητα Apache Kafka, εξαλείφοντας την ανάγκη για αλλαγές στον κώδικα της εφαρμογής.

Όσον αφορά την αξιοπιστία, το Amazon MSK είναι σχεδιασμένο για να ανιχνεύει αυτόματα και να ανακτά από κοινού από καταστάσεις αποτυχίας του cluster, εξασφαλίζοντας ότι οι εφαρμογές παραγωγού και καταναλωτή συνεχίζουν τις δραστηριότητές τους εγγραφής και ανάγνωσης δεδομένων με ελάχιστη διακοπή. Επιπλέον, στοχεύει στη βελτιστοποίηση των διαδικασιών αντιγραφής δεδομένων προσπαθώντας να επαναχρησιμοποιήσει την αποθήκευση των αντικατασταθέντων brokers, μειώνοντας έτσι τον όγκο των δεδομένων που πρέπει να αντιγραφούν από το Apache Kafka.

Τύποι

Υπάρχουν 2 τύποι καταλόγων Kafka που επιτρέπει η AWS να δημιουργήσει: Προμηθευμένοι και Χωρίς διακομιστή.

Από την άποψη ενός επιτιθέμενου, πρέπει να γνωρίζετε ότι:

  • Οι Χωρίς διακομιστή δεν μπορούν να είναι απευθείας δημόσιοι (μπορούν να λειτουργούν μόνο σε ένα VPN χωρίς καμία δημόσια διευθυνσιοδότηση IP). Ωστόσο, οι Προμηθευμένοι μπορούν να ρυθμιστούν για να λάβουν μια δημόσια IP (από προεπιλογή δεν το κάνουν) και να ρυθμίσουν τη συμμάχη ασφαλείας για να εκθέσουν τις σχετικές θύρες.

  • Οι Χωρίς διακομιστή υποστηρίζουν μόνο το IAM ως μέθοδο πιστοποίησης. Οι Προμηθευμένοι υποστηρίζουν την πιστοποίηση SASL/SCRAM (κωδικός πρόσβασης), την πιστοποίηση IAM, τον διαχειριστή πιστοποιητικών AWS (ACM) και την Μη πιστοποιημένη πρόσβαση.

  • Σημειώστε ότι δεν είναι δυνατή η δημόσια εκθεσημότητα ενός Προμηθευμένου Kafka εάν είναι ενεργοποιημένη η μη πιστοποιημένη πρόσβαση

#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>

Πρόσβαση IAM στο Kafka (σε serverless)

Οι υπηρεσίες Kafka στο AWS Managed Streaming for Apache Kafka (MSK) μπορούν να παρέχουν πρόσβαση μέσω του Identity and Access Management (IAM). Αυτό σημαίνει ότι μπορείτε να διαμορφώσετε τα δικαιώματα πρόσβασης για τους χρήστες και τους ρόλους σας στο AWS, προκειμένου να ελέγξετε ποιοι έχουν πρόσβαση στο Kafka cluster σας.

Για να διαμορφώσετε την πρόσβαση IAM για το Kafka cluster, μπορείτε να χρησιμοποιήσετε τις πολιτικές IAM για να ορίσετε τα δικαιώματα πρόσβασης για τους χρήστες και τους ρόλους σας. Μπορείτε να περιορίσετε την πρόσβαση με βάση τις διάφορες ενέργειες που μπορούν να εκτελέσουν οι χρήστες, όπως την παραγωγή και την κατανάλωση μηνυμάτων, τη δημιουργία θεμάτων και τη διαχείριση των δικαιωμάτων πρόσβασης.

Επιπλέον, μπορείτε να χρησιμοποιήσετε το AWS Identity and Access Management (IAM) για να διαμορφώσετε την πρόσβαση IAM για τις εφαρμογές σας που εκτελούνται σε serverless περιβάλλοντα, όπως το AWS Lambda. Μπορείτε να ορίσετε ρόλους IAM για τις εφαρμογές σας και να παρέχετε τα απαραίτητα δικαιώματα πρόσβασης στο Kafka cluster.

Με τη σωστή διαμόρφωση της πρόσβασης IAM, μπορείτε να ελέγξετε αποτελεσματικά την πρόσβαση στο Kafka cluster σας και να διασφαλίσετε την ασφάλεια των δεδομένων σας.

# 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

Ανέβασμα δικαιωμάτων

AWS - MSK Privesc

Μη εξουσιοδοτημένη πρόσβαση

AWS - MSK Unauthenticated Enum

Μόνιμη παραμονή

Εάν έχετε πρόσβαση στο VPC όπου βρίσκεται ένα Προμηθευμένο Kafka, μπορείτε να ενεργοποιήσετε μη εξουσιοδοτημένη πρόσβαση, εάν SASL/SCRAM πιστοποίηση, διαβάσετε τον κωδικό πρόσβασης από το μυστικό, δώσετε κάποιες άλλες ελεγχόμενες δικαιώματα IAM χρήστη (εάν χρησιμοποιείται IAM ή serverless) ή μείνετε μόνιμοι με πιστοποιητικά.

Αναφορές

Μάθετε το hacking στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Άλλοι τρόποι για να υποστηρίξετε το HackTricks:

Last updated