AWS - MSK Enum
Tip
Apprenez & pratiquez AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Soutenez HackTricks
- Consultez les subscription plans!
- Rejoignez le đŹ Discord group ou le telegram group ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des hacking tricks en soumettant des PRs aux HackTricks et HackTricks Cloud github repos.
Amazon MSK
Amazon Managed Streaming for Apache Kafka (Amazon MSK) est un service entiĂšrement gĂ©rĂ©, facilitant le dĂ©veloppement et lâexĂ©cution dâapplications traitant des donnĂ©es en streaming via Apache Kafka. Les opĂ©rations de contrĂŽle, y compris la crĂ©ation, la mise Ă jour et la suppression de clusters, sont proposĂ©es par Amazon MSK. Le service permet lâutilisation des opĂ©rations de data-plane dâApache Kafka, englobant la production et la consommation de donnĂ©es. Il fonctionne sur des versions open-source dâApache Kafka, garantissant la compatibilitĂ© avec les applications, outils et plugins existants provenant Ă la fois des partenaires et de la communautĂ© Apache Kafka, Ă©liminant ainsi le besoin de modifications dans le code de lâapplication.
En termes de fiabilitĂ©, Amazon MSK est conçu pour dĂ©tecter et rĂ©cupĂ©rer automatiquement des scĂ©narios de dĂ©faillance de cluster courants, garantissant que les applications productrices et consommatrices continuent leurs activitĂ©s dâĂ©criture et de lecture de donnĂ©es avec un minimum de perturbations. De plus, il vise Ă optimiser les processus de rĂ©plication des donnĂ©es en tentant de rĂ©utiliser le stockage des brokers remplacĂ©s, minimisant ainsi le volume de donnĂ©es qui doit ĂȘtre rĂ©pliquĂ© par Apache Kafka.
Types
Il existe 2 types de clusters Kafka que AWS permet de créer : Provisionné et Sans serveur.
Du point de vue dâun attaquant, vous devez savoir que :
- Sans serveur ne peut pas ĂȘtre directement public (il ne peut fonctionner que dans un VPN sans aucune IP exposĂ©e publiquement). Cependant, ProvisionnĂ© peut ĂȘtre configurĂ© pour obtenir une IP publique (par dĂ©faut, ce nâest pas le cas) et configurer le groupe de sĂ©curitĂ© pour exposer les ports pertinents.
- Sans serveur ne prend en charge que IAM comme mĂ©thode dâauthentification. ProvisionnĂ© prend en charge lâauthentification SASL/SCRAM (mot de passe), lâauthentification IAM, lâauthentification AWS Certificate Manager (ACM) et lâaccĂšs non authentifiĂ©.
- Notez quâil nâest pas possible dâexposer publiquement un Kafka ProvisionnĂ© si lâaccĂšs non authentifiĂ© est activĂ©.
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>
AccĂšs IAM Kafka (en 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
Privesc
AccÚs non authentifié
AWS - MSK Unauthenticated Enum
Persistance
Si vous allez avoir accĂšs au VPC oĂč se trouve un Kafka ProvisionnĂ©, vous pourriez activer un accĂšs non autorisĂ©, si lâauthentification SASL/SCRAM, lire le mot de passe Ă partir du secret, donner des permissions IAM Ă un autre utilisateur contrĂŽlĂ© (si IAM ou sans serveur utilisĂ©) ou persister avec des certificats.
Références
Tip
Apprenez & pratiquez AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Soutenez HackTricks
- Consultez les subscription plans!
- Rejoignez le đŹ Discord group ou le telegram group ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des hacking tricks en soumettant des PRs aux HackTricks et HackTricks Cloud github repos.
HackTricks Cloud

