mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-01 07:25:51 -08:00
96 lines
8.3 KiB
Markdown
96 lines
8.3 KiB
Markdown
# AWS - MSK Enum
|
|
|
|
{{#include ../../../banners/hacktricks-training.md}}
|
|
|
|
## Amazon MSK
|
|
|
|
**Amazon Managed Streaming for Apache Kafka (Amazon MSK)** एक सेवा है जो पूरी तरह से प्रबंधित है, जो **Apache Kafka** के माध्यम से स्ट्रीमिंग डेटा को संसाधित करने वाले अनुप्रयोगों के विकास और निष्पादन को सुविधाजनक बनाती है। नियंत्रण-स्तर संचालन, जिसमें **क्लस्टर** का निर्माण, अद्यतन और हटाना शामिल है, Amazon MSK द्वारा प्रदान किए जाते हैं। यह सेवा Apache Kafka **डेटा-स्तर संचालन** के उपयोग की अनुमति देती है, जिसमें डेटा उत्पादन और उपभोग शामिल हैं। यह **Apache Kafka** के ओपन-सोर्स संस्करणों पर काम करती है, जो मौजूदा अनुप्रयोगों, उपकरणों और साझेदारों और **Apache Kafka समुदाय** से प्लगइन्स के साथ संगतता सुनिश्चित करती है, जिससे अनुप्रयोग कोड में परिवर्तनों की आवश्यकता समाप्त हो जाती है।
|
|
|
|
विश्वसनीयता के मामले में, Amazon MSK को **सामान्य क्लस्टर विफलता परिदृश्यों** का स्वचालित रूप से पता लगाने और पुनर्प्राप्त करने के लिए डिज़ाइन किया गया है, यह सुनिश्चित करते हुए कि उत्पादक और उपभोक्ता अनुप्रयोग अपने डेटा लेखन और पढ़ने की गतिविधियों में न्यूनतम व्यवधान के साथ बने रहें। इसके अलावा, यह डेटा पुनरुत्पादन प्रक्रियाओं को अनुकूलित करने का प्रयास करता है, **बदले गए ब्रोकरों के भंडारण** का पुन: उपयोग करने का प्रयास करके, इस प्रकार Apache Kafka द्वारा पुनरुत्पादित किए जाने वाले डेटा की मात्रा को कम करता है।
|
|
|
|
### **Types**
|
|
|
|
AWS द्वारा बनाने के लिए 2 प्रकार के Kafka क्लस्टर हैं: प्रावधानित और सर्वरलेस।
|
|
|
|
एक हमलावर के दृष्टिकोण से आपको यह जानना आवश्यक है कि:
|
|
|
|
- **सर्वरलेस सीधे सार्वजनिक नहीं हो सकता** (यह केवल एक VPN में चल सकता है जिसमें कोई सार्वजनिक रूप से उजागर IP नहीं है)। हालाँकि, **प्रावधानित** को **सार्वजनिक IP** प्राप्त करने के लिए कॉन्फ़िगर किया जा सकता है (डिफ़ॉल्ट रूप से यह नहीं होता) और **सुरक्षा समूह** को प्रासंगिक पोर्ट को **उजागर** करने के लिए कॉन्फ़िगर किया जा सकता है।
|
|
- **सर्वरलेस** **केवल IAM** को प्रमाणीकरण विधि के रूप में समर्थन करता है। **प्रावधानित** SASL/SCRAM (**पासवर्ड**) प्रमाणीकरण, **IAM** प्रमाणीकरण, AWS **प्रमाणपत्र** प्रबंधक (ACM) प्रमाणीकरण और **अप्रमाणित** पहुंच का समर्थन करता है।
|
|
- ध्यान दें कि यदि अप्रमाणित पहुंच सक्षम है तो प्रावधानित Kafka को सार्वजनिक रूप से उजागर करना संभव नहीं है।
|
|
|
|
### Enumeration
|
|
```bash
|
|
#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 एक्सेस (सर्वरलेस में)
|
|
```bash
|
|
# 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
|
|
|
|
{{#ref}}
|
|
../aws-privilege-escalation/aws-msk-privesc.md
|
|
{{#endref}}
|
|
|
|
### Unauthenticated Access
|
|
|
|
{{#ref}}
|
|
../aws-unauthenticated-enum-access/aws-msk-unauthenticated-enum.md
|
|
{{#endref}}
|
|
|
|
### Persistence
|
|
|
|
यदि आप उस **VPC** तक **पहुँच** रखने जा रहे हैं जहाँ एक Provisioned Kafka है, तो आप **अनधिकृत पहुँच** **सक्षम** कर सकते हैं, यदि **SASL/SCRAM प्रमाणीकरण**, **गुप्त से** पासवर्ड **पढ़ें**, कुछ **अन्य नियंत्रित उपयोगकर्ता IAM अनुमतियाँ** दें (यदि IAM या सर्वरलेस का उपयोग किया गया हो) या **प्रमाणपत्रों** के साथ **स्थायी** रहें।
|
|
|
|
## References
|
|
|
|
- [https://docs.aws.amazon.com/msk/latest/developerguide/what-is-msk.html](https://docs.aws.amazon.com/msk/latest/developerguide/what-is-msk.html)
|
|
|
|
{{#include ../../../banners/hacktricks-training.md}}
|