AWS - MSK Enum
Reading time: 7 minutes
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
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 が作成を許可する Kafka クラスターには、プロビジョンドとサーバーレスの 2 種類があります。
攻撃者の観点から知っておくべきことは次のとおりです:
- サーバーレスは直接公開できません(公開されている IP なしで VPN 内でのみ実行できます)。ただし、プロビジョンドは パブリック IP を取得するように構成でき(デフォルトではできません)、関連するポートを公開するために セキュリティグループ を構成できます。
- サーバーレス は認証方法として IAM のみをサポート します。プロビジョンド は SASL/SCRAM (パスワード) 認証、IAM 認証、AWS Certificate Manager (ACM) 認証、および 未認証 アクセスをサポートします。
- 未認証アクセスが有効な場合、プロビジョンド Kafka を公開することはできないことに注意してください。
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 アクセス (サーバーレス内)
# 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
プライバシー昇格
認証されていないアクセス
AWS - MSK Unauthenticated Enum
永続性
Provisioned KafkaがあるVPCにアクセスできる場合、SASL/SCRAM認証を使用して不正アクセスを有効にすることができ、秘密からパスワードを読み取り、他の制御されたユーザーにIAM権限を付与することができます(IAMまたはサーバーレスを使用している場合)または証明書を使用して永続化することができます。
参考文献
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。