AWS - MSK Enum
Reading time: 5 minutes
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Amazon MSK
Amazon Managed Streaming for Apache Kafka (Amazon MSK) je usluga koja je potpuno upravljana, olakšavajući razvoj i izvršenje aplikacija koje obrađuju strimovane podatke putem Apache Kafka. Operacije kontrolne ravni, uključujući kreiranje, ažuriranje i brisanje klastera, nudi Amazon MSK. Usluga omogućava korišćenje Apache Kafka operacija podataka, obuhvatajući proizvodnju i potrošnju podataka. Radi na open-source verzijama Apache Kafka, osiguravajući kompatibilnost sa postojećim aplikacijama, alatima i dodacima kako partnera tako i Apache Kafka zajednice, eliminišući potrebu za izmenama u kodu aplikacije.
U pogledu pouzdanosti, Amazon MSK je dizajniran da automatski detektuje i oporavi se od uobičajenih scenarija kvara klastera, osiguravajući da aplikacije proizvođača i potrošača nastave sa svojim aktivnostima pisanja i čitanja podataka uz minimalne prekide. Pored toga, ima za cilj da optimizuje procese replikacije podataka pokušavajući da ponovno iskoristi skladište zamenjenih brokera, čime se smanjuje količina podataka koja treba da se replikira putem Apache Kafka.
Tipovi
Postoje 2 tipa Kafka klastera koje AWS omogućava da se kreiraju: Provisioned i Serverless.
Sa stanovišta napadača, potrebno je znati da:
- Serverless ne može biti direktno javan (može se pokretati samo u VPN-u bez javno izloženog IP-a). Međutim, Provisioned može biti konfiguran da dobije javnu IP adresu (po defaultu to ne radi) i konfiguriše grupu bezbednosti da izloži relevantne portove.
- Serverless samo podržava IAM kao metodu autentifikacije. Provisioned podržava SASL/SCRAM (lozinka) autentifikaciju, IAM autentifikaciju, AWS Certificate Manager (ACM) autentifikaciju i neautentifikovani pristup.
- Imajte na umu da nije moguće javno izložiti Provisioned Kafka ako je omogućен neautentifikovani pristup.
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>
Kafka IAM pristup (u 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
Neautentifikovani pristup
AWS - MSK Unauthenticated Enum
Persistencija
Ako ćete imati pristup VPC-u gde se nalazi Provisioned Kafka, mogli biste omogućiti neautorizovani pristup, ako SASL/SCRAM autentifikacija, pročitate lozinku iz tajne, dodelite nekom drugom kontrolisanom korisniku IAM dozvole (ako se koristi IAM ili serverless) ili persistirate sa sertifikatima.
Reference
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.