AWS - EKS Post Exploitation
EKS
अधिक जानकारी के लिए देखें
AWS - EKS EnumAWS कंसोल से क्लस्टर की गणना करें
यदि आपके पास अनुमति eks:AccessKubernetesApi
है, तो आप AWS EKS कंसोल के माध्यम से Kubernetes ऑब्जेक्ट्स को देख सकते हैं (Learn more).
AWS Kubernetes क्लस्टर से कनेक्ट करें
आसान तरीका:
इतना आसान तरीका नहीं है:
यदि आप aws eks get-token --name <cluster_name>
के साथ एक टोकन प्राप्त कर सकते हैं लेकिन आपके पास क्लस्टर जानकारी (describeCluster) प्राप्त करने की अनुमति नहीं है, तो आप अपना खुद का ~/.kube/config
तैयार कर सकते हैं। हालांकि, टोकन होने पर, आपको जुड़ने के लिए url endpoint की आवश्यकता है (यदि आप एक पॉड से JWT टोकन प्राप्त करने में सफल रहे हैं तो यहाँ पढ़ें) और क्लस्टर का नाम।
मेरे मामले में, मैंने CloudWatch लॉग में जानकारी नहीं पाई, लेकिन मैंने LaunchTemplates userData में और EC2 मशीनों में userData में भी इसे पाया। आप इस जानकारी को userData में आसानी से देख सकते हैं, उदाहरण के लिए अगले उदाहरण में (क्लस्टर का नाम cluster-name था):
AWS से Kubernetes तक
EKS क्लस्टर का निर्माता हमेशा समूह system:masters
(k8s प्रशासन) के kubernetes क्लस्टर भाग में प्रवेश प्राप्त कर सकेगा। इस लेख के समय क्लस्टर को बनाने वाले कोई सीधा तरीका नहीं है (आप CloudTrail की जांच कर सकते हैं)। और उस अधिकार को हटाने का कोई तरीका नहीं है।
AWS IAM उपयोगकर्ताओं या भूमिकाओं को K8s पर अधिक पहुंच देने का तरीका configmap aws-auth
का उपयोग करना है।
इसलिए, config map aws-auth
पर लिखने की पहुंच रखने वाला कोई भी व्यक्ति पूरे क्लस्टर को समझौता कर सकेगा।
IAM भूमिकाओं और उपयोगकर्ताओं को एक ही या विभिन्न खाते में अतिरिक्त अधिकार देने के बारे में अधिक जानकारी के लिए और इसे दुरुपयोग करने के लिए privesc इस पृष्ठ की जांच करें।
यहां भी यह अद्भुत पोस्ट देखें कि IAM -> Kubernetes प्रमाणीकरण कैसे काम करता है।
Kubernetes से AWS तक
यह संभव है कि kubernetes सेवा खाते के लिए OpenID प्रमाणीकरण की अनुमति दी जाए ताकि वे AWS में भूमिकाएँ ग्रहण कर सकें। जानें कि यह इस पृष्ठ पर कैसे काम करता है।
JWT टोकन से GET Api सर्वर एंडपॉइंट
नहीं मिला कोई दस्तावेज़ जो 'दो अक्षरों' और 'संख्या' के लिए मानदंडों को समझाए। लेकिन अपनी ओर से कुछ परीक्षण करते समय मैंने इनमें से कुछ को बार-बार देखा:
gr7
yl4
वैसे भी, ये सिर्फ 3 अक्षर हैं, हम इन्हें ब्रूटफोर्स कर सकते हैं। सूची उत्पन्न करने के लिए नीचे दिए गए स्क्रिप्ट का उपयोग करें।
फिर wfuzz के साथ
याद रखें कि & को बदलें।
CloudTrail को बायपास करें
यदि एक हमलावर को EKS पर अनुमति के साथ AWS के क्रेडेंशियल मिलते हैं। यदि हमलावर अपने kubeconfig
को कॉन्फ़िगर करता है (बिना update-kubeconfig
को कॉल किए) जैसा कि पहले समझाया गया है, तो get-token
Cloudtrail में लॉग उत्पन्न नहीं करता है क्योंकि यह AWS API के साथ इंटरैक्ट नहीं करता (यह बस स्थानीय रूप से टोकन बनाता है)।
तो जब हमलावर EKS क्लस्टर के साथ बात करता है, cloudtrail उपयोगकर्ता के चोरी होने और इसे एक्सेस करने से संबंधित कुछ भी लॉग नहीं करेगा।
ध्यान दें कि EKS क्लस्टर में लॉग सक्षम हो सकते हैं जो इस एक्सेस को लॉग करेंगे (हालांकि, डिफ़ॉल्ट रूप से, वे अक्षम होते हैं)।
EKS फिरौती?
डिफ़ॉल्ट रूप से, उपयोगकर्ता या भूमिका जिसने एक क्लस्टर बनाया है, हमेशा क्लस्टर पर प्रशासनिक विशेषाधिकार रखने वाला होगा। और यही एकमात्र "सुरक्षित" एक्सेस है जो AWS Kubernetes क्लस्टर पर होगा।
तो, यदि एक हमलावर फर्गेट का उपयोग करके एक क्लस्टर से समझौता करता है और सभी अन्य प्रशासकों को हटा देता है और क्लस्टर को बनाने वाले AWS उपयोगकर्ता/भूमिका को हटा देता है, हमलावर ने क्लस्टर को फिरौती पर रखा हो सकता है।
ध्यान दें कि यदि क्लस्टर EC2 VMs का उपयोग कर रहा था, तो नोड से प्रशासनिक विशेषाधिकार प्राप्त करना और क्लस्टर को पुनर्प्राप्त करना संभव हो सकता है।
वास्तव में, यदि क्लस्टर फर्गेट का उपयोग कर रहा है तो आप EC2 नोड्स प्राप्त कर सकते हैं या क्लस्टर में सब कुछ EC2 पर ले जा सकते हैं और नोड में टोकन को एक्सेस करके इसे पुनर्प्राप्त कर सकते हैं।
Last updated