AWS - MSK Enum

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman olmak için AWS hackleme öğrenin!

HackTricks'ı desteklemenin diğer yolları:

Amazon MSK

Amazon Managed Streaming for Apache Kafka (Amazon MSK), Apache Kafka üzerinden akış verilerini işleyen uygulamaların geliştirilmesini ve yürütülmesini kolaylaştıran tamamen yönetilen bir hizmettir. Amazon MSK, kümelerin oluşturulması, güncellenmesi ve silinmesi gibi kontrol düzlemi işlemlerini sunar. Hizmet, Apache Kafka veri düzlemi işlemlerinin kullanılmasına izin verir, bu da veri üretimi ve tüketimi anlamına gelir. Apache Kafka'nın açık kaynak sürümlerinde çalışır ve mevcut uygulamalar, araçlar ve eklentilerle uyumluluğu sağlar, böylece uygulama kodunda değişiklik yapma ihtiyacını ortadan kaldırır.

Güvenilirlik açısından, Amazon MSK, yaygın kümelerin başarısızlık senaryolarını otomatik olarak tespit eder ve kurtarır, böylece üretici ve tüketici uygulamaların veri yazma ve okuma faaliyetlerine kesintisiz devam etmesini sağlar. Ayrıca, Apache Kafka tarafından replike edilmesi gereken veri miktarını en aza indirmek için, değiştirilen brokerların depolama alanını yeniden kullanmaya çalışarak veri replikasyon süreçlerini optimize etmeyi amaçlar.

Türler

AWS'nin oluşturmanıza izin verdiği 2 tür Kafka kümesi vardır: Provisioned ve Serverless.

Saldırganın bakış açısından, şunları bilmelisiniz:

  • Serverless doğrudan halka açık olamaz (yalnızca herhangi bir halka açık IP'si olmadan bir VPN'de çalışabilir). Bununla birlikte, Provisioned bir genel IP alacak şekilde yapılandırılabilir (varsayılan olarak alınmaz) ve güvenlik grubunu ilgili bağlantı noktalarını açığa çıkarmak için yapılandırabilirsiniz.

  • Serverless yalnızca IAM'ı kimlik doğrulama yöntemi olarak destekler. Provisioned SASL/SCRAM (parola) kimlik doğrulamasını, IAM kimlik doğrulamasını, AWS Certificate Manager (ACM) kimlik doğrulamasını ve Kimliksiz erişimi destekler.

  • Unauthenticated erişimi etkinleştirilmişse, Provisioned Kafka'yı halka açık olarak açığa çıkarmak mümkün değildir.

Enumerasyon

#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 Erişimi (sunucusuz)

Kafka, AWS Managed Streaming for Apache Kafka (MSK) hizmeti üzerinde çalışan bir dağıtılmış akış işleme platformudur. Kafka'nın sunucusuz bir ortamda kullanılması durumunda, IAM (Kimlik ve Erişim Yönetimi) rolleri kullanılarak erişim kontrolü sağlanır.

IAM rolleri, Kafka kaynaklarına erişim izinlerini yönetmek için kullanılır. Bu roller, AWS Identity and Access Management (IAM) hizmeti aracılığıyla oluşturulur ve yönetilir. IAM rolleri, Kafka kümelerine erişim sağlamak için gerekli olan izinleri içerir.

IAM rolleri, Kafka kümelerine erişim sağlamak için kullanılan AWS hizmetlerine özgü izinler içerir. Bu izinler, Kafka kümelerinin yönetimi, konfigürasyonu ve veri işleme işlemleri gibi farklı görevleri gerçekleştirmek için gereklidir.

IAM rolleri, AWS Management Console, AWS CLI veya AWS SDK'ları aracılığıyla oluşturulabilir ve yönetilebilir. Bu roller, Kafka kümelerine erişim sağlamak için kullanılan AWS hizmetlerine özgü izinler içerir.

IAM rolleri, Kafka kümelerine erişim sağlamak için kullanılan AWS hizmetlerine özgü izinler içerir. Bu izinler, Kafka kümelerinin yönetimi, konfigürasyonu ve veri işleme işlemleri gibi farklı görevleri gerçekleştirmek için gereklidir.

IAM rolleri, Kafka kümelerine erişim sağlamak için kullanılan AWS hizmetlerine özgü izinler içerir. Bu izinler, Kafka kümelerinin yönetimi, konfigürasyonu ve veri işleme işlemleri gibi farklı görevleri gerçekleştirmek için gereklidir.

# 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

AWS - MSK Privesc

Kimlik Doğrulaması Olmadan Erişim

AWS - MSK Unauthenticated Enum

Kalıcılık

Eğer bir Provisioned Kafka'nın olduğu VPC'ye erişiminiz varsa, kimlik doğrulaması olmadan erişimi etkinleştirebilirsiniz, eğer SASL/SCRAM kimlik doğrulaması kullanılıyorsa, şifreyi sırdan okuyabilir, bazı diğer kontrol edilebilir kullanıcı IAM izinleri (eğer IAM veya serverless kullanılıyorsa) verebilir veya sertifikalarla kalıcı hale getirebilirsiniz.

Referanslar

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman olmak için AWS hackleme öğrenin!

HackTricks'ı desteklemenin diğer yolları:

Last updated