AWS - MSK Enum

Support HackTricks

Amazon MSK

Amazon Managed Streaming for Apache Kafka (Amazon MSK) ni huduma ambayo inasimamiwa kabisa, inayorahisisha maendeleo na utekelezaji wa programu zinazoprocess data za mtiririko kupitia Apache Kafka. Operesheni za kiendeshi, ikiwa ni pamoja na uundaji, uppdatering, na kufuta makundi, zinatolewa na Amazon MSK. Huduma inaruhusu matumizi ya operesheni za kiendeshi za Apache Kafka, zikiwemo uzalishaji na utumiaji wa data. Inafanya kazi kwenye toleo za chanzo wazi za Apache Kafka, ikidhibitisha utangamano na programu zilizopo, zana, na programu-jalizi kutoka kwa washirika na jamii ya Apache Kafka, ikiondoa haja ya marekebisho katika nambari ya programu.

Kuhusu uaminifu, Amazon MSK imeundwa kwa njia ambayo inagundua na kurejesha moja kwa moja kutoka kwa hali za kawaida za kushindwa kwa kundi, ikihakikisha kwamba programu za uzalishaji na utumiaji wa data zinaendelea na shughuli zao za kuandika na kusoma data bila usumbufu. Zaidi ya hayo, lengo lake ni kuboresha mchakato wa kuzidisha data kwa kujaribu kutumia upya uhifadhi wa mawakala waliobadilishwa, hivyo kupunguza kiasi cha data inayohitaji kuzidishwa na Apache Kafka.

Aina

Kuna aina 2 za makundi ya Kafka ambayo AWS inaruhusu kuunda: Imetolewa na Bila seva.

Kutoka mtazamo wa mshambuliaji unahitaji kujua kwamba:

  • Bila seva haitaweza kuwa wazi moja kwa moja (inaweza tu kukimbia kwenye VPN bila anwani ya IP iliyofunuliwa hadharani). Hata hivyo, Imetolewa inaweza kusanidiwa kupata anwani ya IP ya umma (kwa chaguo-msingi haitoi) na kusanidi kikundi cha usalama ku funua bandari muhimu.

  • Bila seva inasaidia tu IAM kama njia ya uthibitishaji. Imetolewa inasaidia SASL/SCRAM (nywila) uthibitishaji, uthibitishaji wa IAM, Meneja wa Cheti cha AWS (ACM) uthibitishaji na ufikiaji usiothibitishwa.

  • Tafadhali kumbuka kwamba haiwezekani kufunua hadharani Kafka ya Imetolewa ikiwa ufikiaji usiothibitishwa umewezeshwa

Uchambuzi

#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>

Upatikanaji wa IAM wa Kafka (katika 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

AWS - MSK Privesc

Upatikanaji usiothibitishwa

AWS - MSK Unauthenticated Enum

Uthabiti

Ikiwa utakuwa na ufikiaji wa VPC ambapo Kafka iliyopangwa iko, unaweza kuwezesha ufikiaji usiothibitishwa, ikiwa uthibitishaji wa SASL/SCRAM, soma nenosiri kutoka siri, toa ruhusa za IAM za mtumiaji mwingine aliye na udhibiti (ikiwa IAM au serverless inatumika) au endelea na vyeti.

Marejeo

Support HackTricks

Last updated