AWS - MSK Enum
Tip
Aprende y practica AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Consulta los subscription plans!
- 脷nete al 馃挰 Discord group o al telegram group o s铆guenos en Twitter 馃惁 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud github repos.
Amazon MSK
Amazon Managed Streaming for Apache Kafka (Amazon MSK) es un servicio completamente gestionado que facilita el desarrollo y la ejecuci贸n de aplicaciones que procesan datos en streaming a trav茅s de Apache Kafka. Las operaciones del plano de control, incluyendo la creaci贸n, actualizaci贸n y eliminaci贸n de clusters, son ofrecidas por Amazon MSK. El servicio permite la utilizaci贸n de operaciones del plano de datos de Apache Kafka, abarcando la producci贸n y consumo de datos. Funciona con versiones de c贸digo abierto de Apache Kafka, asegurando la compatibilidad con aplicaciones, herramientas y complementos existentes tanto de socios como de la comunidad de Apache Kafka, eliminando la necesidad de alteraciones en el c贸digo de la aplicaci贸n.
En t茅rminos de fiabilidad, Amazon MSK est谩 dise帽ado para detectar y recuperarse autom谩ticamente de escenarios comunes de fallos en clusters, asegurando que las aplicaciones de productores y consumidores contin煤en con sus actividades de escritura y lectura de datos con m铆nima interrupci贸n. Adem谩s, busca optimizar los procesos de replicaci贸n de datos al intentar reutilizar el almacenamiento de brokers reemplazados, minimizando as铆 el volumen de datos que necesita ser replicado por Apache Kafka.
Tipos
Hay 2 tipos de clusters de Kafka que AWS permite crear: Provisionados y Sin Servidor.
Desde el punto de vista de un atacante, necesitas saber que:
- Sin Servidor no puede ser p煤blico directamente (solo puede ejecutarse en una VPN sin ninguna IP expuesta p煤blicamente). Sin embargo, Provisionado puede configurarse para obtener una IP p煤blica (por defecto no lo tiene) y configurar el grupo de seguridad para exponer los puertos relevantes.
- Sin Servidor solo soporta IAM como m茅todo de autenticaci贸n. Provisionado soporta autenticaci贸n SASL/SCRAM (contrase帽a), autenticaci贸n IAM, autenticaci贸n de AWS Certificate Manager (ACM) y acceso No Autenticado.
- Ten en cuenta que no es posible exponer p煤blicamente un Kafka Provisionado si el acceso no autenticado est谩 habilitado.
Enumeraci贸n
#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>
Acceso IAM a 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
Acceso No Autenticado
AWS - MSK Unauthenticated Enum
Persistencia
Si vas a tener acceso a la VPC donde se encuentra un Kafka Provisionado, podr铆as habilitar acceso no autorizado, si la autenticaci贸n SASL/SCRAM, leer la contrase帽a del secreto, otorgar algunos permisos IAM a otro usuario controlado (si se usa IAM o sin servidor) o persistir con certificados.
Referencias
Tip
Aprende y practica AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Consulta los subscription plans!
- 脷nete al 馃挰 Discord group o al telegram group o s铆guenos en Twitter 馃惁 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud github repos.
HackTricks Cloud

