AWS - MSK Enum

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Amazon MSK

Amazon Managed Streaming for Apache Kafka (Amazon MSK) je usluga koja je potpuno upravljana, olakšavajući razvoj i izvršavanje aplikacija koje obrađuju tok podataka putem Apache Kafka-e. Amazon MSK nudi operacije upravljanja kontrolne ravni, uključujući kreiranje, ažuriranje i brisanje klastera. Usluga omogućava korišćenje operacija podataka Apache Kafka-e, uključujući proizvodnju i potrošnju podataka. Radi na open-source verzijama Apache Kafka-e, obezbeđujući kompatibilnost sa postojećim aplikacijama, alatima i pluginovima kako od partnera, tako i od Apache Kafka zajednice, eliminišući potrebu za izmenama u kodu aplikacije.

Što se tiče pouzdanosti, Amazon MSK je dizajniran da automatski otkriva i oporavlja se od uobičajenih scenarija kvarova klastera, obezbeđujući da aplikacije proizvođača i potrošača nastave sa svojim aktivnostima pisanja i čitanja podataka sa minimalnim prekidima. Osim toga, cilj mu je optimizacija procesa replikacije podataka pokušajem ponovne upotrebe skladišta zamenjenih broker-a, čime se smanjuje količina podataka koja treba da se replikuje putem Apache Kafka-e.

Tipovi

Postoje 2 tipa Kafka klastera koje AWS dozvoljava kreiranje: Provisioned i Serverless.

Sa stanovišta napadača, trebate znati da:

  • Serverless ne može biti direktno javan (može se pokrenuti samo u VPN-u bez bilo kakve javno izložene IP adrese). Međutim, Provisioned se može konfigurisati da dobije javnu IP adresu (podrazumevano je da je nema) i konfigurisati security group da izloži relevantne portove.

  • Serverless podržava samo IAM kao metodu autentifikacije. Provisioned podržava SASL/SCRAM (password) autentifikaciju, IAM autentifikaciju, AWS Certificate Manager (ACM) autentifikaciju i Neautentifikovan pristup.

  • Imajte na umu da nije moguće javno izložiti Provisioned Kafka ako je omogućen neautentifikovan pristup.

Enumeracija

#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 pristup (u serverless okruženju)

AWS Managed Streaming for Apache Kafka (MSK) je usluga koja omogućava upravljanje Apache Kafka klasterima u AWS cloud okruženju. Kada koristite serverless arhitekturu za Kafka klaster, možete koristiti IAM (Identity and Access Management) politike za kontrolu pristupa resursima.

IAM politike definišu dozvole za AWS resurse kao što su klasteri, teme i particije. Možete koristiti IAM politike za omogućavanje ili ograničavanje pristupa određenim akcijama, kao što su čitanje, pisanje ili upravljanje temama i particijama.

Da biste omogućili IAM pristup za Kafka klaster u serverless okruženju, morate kreirati IAM politike koje definišu dozvole za određene korisnike ili grupe korisnika. Ove politike se zatim pridružuju korisnicima ili grupama korisnika putem IAM uloga.

Kada korisnik ili grupa korisnika ima odgovarajuće IAM dozvole, mogu pristupiti Kafka klasteru i izvršavati odobrene akcije. Ovo omogućava kontrolu pristupa i osigurava da samo ovlašćeni korisnici mogu manipulisati Kafka resursima.

Važno je pažljivo konfigurisati IAM politike kako biste osigurali da samo neophodne akcije budu dozvoljene i da se spreči neovlašćeni pristup ili zloupotreba Kafka klastera.

# 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

Neautentifikovan pristup

AWS - MSK Unauthenticated Enum

Upornost

Ako ćete imati pristup VPC-u gde se nalazi Provisioned Kafka, možete omogućiti neovlašćen pristup, ako je SASL/SCRAM autentifikacija, pročitajte lozinku iz tajnog mesta, dodelite nekim drugim kontrolisanim IAM dozvolama korisnika (ako se koristi IAM ili serverless) ili upornost sa sertifikatima.

Reference

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Last updated