AWS - EKS Post Exploitation

शून्य से नायक तक AWS हैकिंग सीखें htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

EKS

अधिक जानकारी के लिए देखें

pageAWS - EKS Enum

AWS Console से क्लस्टर का एन्युमरेट करें

यदि आपके पास अनुमति eks:AccessKubernetesApi है, तो आप AWS EKS कंसोल के माध्यम से Kubernetes ऑब्जेक्ट्स को देख सकते हैं (और जानें).

AWS Kubernetes क्लस्टर से कनेक्ट करें

  • आसान तरीका:

# Generate kubeconfig
aws eks update-kubeconfig --name aws-eks-dev
  • इतना आसान नहीं है:

यदि आप aws eks get-token --name <cluster_name> के साथ टोकन प्राप्त कर सकते हैं परन्तु आपके पास क्लस्टर की जानकारी प्राप्त करने की अनुमति नहीं है (describeCluster), तो आप अपना ~/.kube/config तैयार कर सकते हैं। हालांकि, टोकन होने के बावजूद, आपको अभी भी url endpoint की आवश्यकता होती है जिससे जुड़ना है और क्लस्टर का नाम

मेरे मामले में, मुझे CloudWatch लॉग्स में यह जानकारी नहीं मिली, लेकिन मैंने इसे LaunchTemaplates के userData में और EC2 मशीनों के userData में भी पाया। आप इस जानकारी को userData में आसानी से देख सकते हैं, उदाहरण के लिए निम्नलिखित उदाहरण में (क्लस्टर का नाम cluster-name था):

API_SERVER_URL=https://6253F6CA47F81264D8E16FAA7A103A0D.gr7.us-east-1.eks.amazonaws.com

/etc/eks/bootstrap.sh cluster-name --kubelet-extra-args '--node-labels=eks.amazonaws.com/sourceLaunchTemplateVersion=1,alpha.eksctl.io/cluster-name=cluster-name,alpha.eksctl.io/nodegroup-name=prd-ondemand-us-west-2b,role=worker,eks.amazonaws.com/nodegroup-image=ami-002539dd2c532d0a5,eks.amazonaws.com/capacityType=ON_DEMAND,eks.amazonaws.com/nodegroup=prd-ondemand-us-west-2b,type=ondemand,eks.amazonaws.com/sourceLaunchTemplateId=lt-0f0f0ba62bef782e5 --max-pods=58' --b64-cluster-ca $B64_CLUSTER_CA --apiserver-endpoint $API_SERVER_URL --dns-cluster-ip $K8S_CLUSTER_DNS_IP --use-max-pods false
kube config

```yaml describe-cache-parametersapiVersion: v1 clusters: - cluster: certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMvakNDQWVhZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJeU1USXlPREUyTWpjek1Wb1hEVE15TVRJeU5URTJNamN6TVZvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTDlXCk9OS0ZqeXZoRUxDZGhMNnFwWkMwa1d0UURSRVF1UzVpRDcwK2pjbjFKWXZ4a3FsV1ZpbmtwOUt5N2x2ME5mUW8KYkNqREFLQWZmMEtlNlFUWVVvOC9jQXJ4K0RzWVlKV3dzcEZGbWlsY1lFWFZHMG5RV1VoMVQ3VWhOanc0MllMRQpkcVpzTGg4OTlzTXRLT1JtVE5sN1V6a05pTlUzSytueTZSRysvVzZmbFNYYnRiT2kwcXJSeFVpcDhMdWl4WGRVCnk4QTg3VjRjbllsMXo2MUt3NllIV3hhSm11eWI5enRtbCtBRHQ5RVhOUXhDMExrdWcxSDBqdTl1MDlkU09YYlkKMHJxY2lINjYvSTh0MjlPZ3JwNkY0dit5eUNJUjZFQURRaktHTFVEWUlVSkZ4WXA0Y1pGcVA1aVJteGJ5Nkh3UwpDSE52TWNJZFZRRUNQMlg5R2c4Q0F3RUFBYU5aTUZjd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0hRWURWUjBPQkJZRUZQVXFsekhWZmlDd0xqalhPRmJJUUc3L0VxZ1hNQlVHQTFVZEVRUU8KTUF5Q0NtdDFZbVZ5Ym1WMFpYTXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBS1o4c0l4aXpsemx0aXRPcGcySgpYV0VUSThoeWxYNWx6cW1mV0dpZkdFVVduUDU3UEVtWW55eWJHbnZ5RlVDbnczTldMRTNrbEVMQVE4d0tLSG8rCnBZdXAzQlNYamdiWFovdWVJc2RhWlNucmVqNU1USlJ3SVFod250ZUtpU0J4MWFRVU01ZGdZc2c4SlpJY3I2WC8KRG5POGlHOGxmMXVxend1dUdHSHM2R1lNR0Mvd1V0czVvcm1GS291SmtSUWhBZElMVkNuaStYNCtmcHUzT21UNwprS3VmR0tyRVlKT09VL1c2YTB3OTRycU9iSS9Mem1GSWxJQnVNcXZWVDBwOGtlcTc1eklpdGNzaUJmYVVidng3Ci9sMGhvS1RqM0IrOGlwbktIWW4wNGZ1R2F2YVJRbEhWcldDVlZ4c3ZyYWpxOUdJNWJUUlJ6TnpTbzFlcTVZNisKRzVBPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== server: https://6253F6CA47F81264D8E16FAA7A103A0D.gr7.us-west-2.eks.amazonaws.com name: arn:aws:eks:us-east-1::cluster/ contexts: - context: cluster: arn:aws:eks:us-east-1::cluster/ user: arn:aws:eks:us-east-1::cluster/ name: arn:aws:eks:us-east-1::cluster/ current-context: arn:aws:eks:us-east-1::cluster/ kind: Config preferences: {} users: - name: arn:aws:eks:us-east-1::cluster/ user: exec: apiVersion: client.authentication.k8s.io/v1beta1 args: - --region - us-west-2 - --profile - - eks - get-token - --cluster-name - command: aws env: null interactiveMode: IfAvailable provideClusterInfo: false ```

AWS से Kubernetes तक

EKS cluster का निर्माता हमेशा समूह system:masters (k8s admin) के kubernetes cluster भाग में प्रवेश करने में सक्षम होगा। इस लेखन के समय, cluster बनाने वाले को पता लगाने का कोई सीधा तरीका नहीं है (CloudTrail की जांच कर सकते हैं)। और उस विशेषाधिकार को हटाने का कोई तरीका नहीं है।

अधिक AWS IAM उपयोगकर्ताओं या भूमिकाओं को K8s तक पहुंच प्रदान करने का तरीका configmap aws-auth का उपयोग करना है।

इसलिए, जिस किसी के पास भी config map aws-auth पर लिखने की पहुंच होगी, वह पूरे cluster को समझौता करने में सक्षम होगा।

IAM भूमिकाओं और उपयोगकर्ताओं को अतिरिक्त विशेषाधिकार प्रदान करने के बारे में अधिक जानकारी के लिए और एक ही या अलग खाते में और इसका दुरुपयोग कैसे करें, इस पृष्ठ की जांच करें

इस शानदार पोस्ट को भी देखें जिससे आप सीख सकते हैं कि IAM -> Kubernetes प्रमाणीकरण कैसे काम करता है।

Kubernetes से AWS तक

AWS में भूमिकाओं को मान लेने के लिए OpenID प्रमाणीकरण के साथ kubernetes सेवा खाते की अनुमति देना संभव है। जानें कि यह कैसे काम करता है इस पृष्ठ पर

CloudTrail को बायपास करना

यदि कोई हमलावर EKS पर अनुमति वाले AWS की साख प्राप्त करता है। यदि हमलावर अपना खुद का kubeconfig कॉन्फ़िगर करता है (बिना update-kubeconfig को कॉल किए), जैसा कि पहले समझाया गया है, तो get-token Cloudtrail में लॉग नहीं बनाता क्योंकि यह AWS API के साथ इंटरैक्ट नहीं करता (यह केवल स्थानीय रूप से टोकन बनाता है)।

इसलिए जब हमलावर EKS cluster से बात करता है, cloudtrail उस उपयोगकर्ता से संबंधित कुछ भी लॉग नहीं करेगा जिसे चुराया गया है और उसे एक्सेस कर रहा है

ध्यान दें कि EKS cluster में लॉग सक्षम हो सकते हैं जो इस पहुंच को लॉग करेंगे (हालांकि, डिफ़ॉल्ट रूप से, वे अक्षम होते हैं)।

EKS Ransom?

डिफ़ॉल्ट रूप से उपयोगकर्ता या भूमिका जिसने cluster बनाया है हमेशा cluster पर admin विशेषाधिकार रखेगा। और वही "सुरक्षित" पहुंच होगी जो AWS के पास Kubernetes cluster पर होगी।

इसलिए, यदि कोई हमलावर fargate का उपयोग करके cluster को समझौता करता है और सभी अन्य admins को हटा देता है और AWS उपयोगकर्ता/भूमिका को हटा देता है जिसने Cluster बनाया, हमलावर cluster को ransom कर सकता है

ध्यान दें कि यदि cluster EC2 VMs का उपयोग कर रहा था, तो Node से Admin विशेषाधिकार प्राप्त करना संभव हो सकता है और cluster को पुनः प्राप्त कर सकता है।

वास्तव में, यदि cluster Fargate का उपयोग कर रहा है तो आप EC2 nodes को जोड़ सकते हैं या सब कुछ EC2 में cluster में स्थानांतरित कर सकते हैं और Node में टोकन तक पहुंच प्राप्त करके इसे पुनः प्राप्त कर सकते हैं।

Learn AWS hacking from zero to hero with htARTE (HackTricks AWS Red Team Expert)!

HackTricks का समर्थन करने के अन्य तरीके:

  • यदि आप अपनी कंपनी को HackTricks में विज्ञापित देखना चाहते हैं या HackTricks को PDF में डाउनलोड करना चाहते हैं तो SUBSCRIPTION PLANS देखें!

  • The PEASS Family की खोज करें, हमारा संग्रह विशेष NFTs

  • 💬 Discord group में शामिल हों या telegram group में या Twitter पर मुझे 🐦 @carlospolopm का पालन करें

  • HackTricks के github repos और HackTricks Cloud में PRs सबमिट करके अपनी हैकिंग ट्रिक्स साझा करें।

Last updated