GCP - Containers, GKE & Composer Enum

शून्य से लेकर हीरो तक AWS हैकिंग सीखें htARTE (HackTricks AWS रेड टीम एक्सपर्ट) के साथ!

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

कंटेनर्स

GCP कंटेनर्स में आप GCP द्वारा प्रदान की गई अधिकांश कंटेनर आधारित सेवाएं पा सकते हैं, यहाँ आप देख सकते हैं कि सबसे आम लोगों का कैसे एनम करें:

gcloud container images list
gcloud container images list --repository us.gcr.io/<project-name> #Search in other subdomains repositories
gcloud container images describe <name>
gcloud container subnets list-usable
gcloud container clusters list
gcloud container clusters describe <name>
gcloud container clusters get-credentials [NAME]

# Run a container locally
docker run --rm -ti gcr.io/<project-name>/secret:v1 sh

# Login & Download
sudo docker login -u oauth2accesstoken -p $(gcloud auth print-access-token) https://HOSTNAME
## where HOSTNAME is gcr.io, us.gcr.io, eu.gcr.io, or asia.gcr.io.
sudo docker pull HOSTNAME/<project-name>/<image-name>

Privesc

निम्नलिखित पृष्ठ पर आप जांच सकते हैं कि कैसे container permissions का दुरुपयोग करके privileges को बढ़ाया जा सकता है:

pageGCP - Container Privesc

Node Pools

ये मशीनों के पूल (nodes) होते हैं जो kubernetes clusters का निर्माण करते हैं।

# Pool of machines used by the cluster
gcloud container node-pools list --zone <zone> --cluster <cluster>
gcloud container node-pools describe --cluster <cluster> --zone <zone> <node-pool>

Composer

यह GCP प्रबंधित संस्करण है Airflow का।

gcloud composer environments list --locations <loc>
gcloud composer environments describe --location <loc> <environment>s

Privesc

निम्नलिखित पृष्ठ पर आप जांच सकते हैं कि कैसे composer की अनुमतियों का दुरुपयोग करके अधिकारों को बढ़ाया जा सकता है:

pageGCP - Composer Privesc

Kubernetes

Kubernetes क्या है, इसकी जानकारी के लिए इस पृष्ठ को देखें:

pageKubernetes Pentesting

सबसे पहले, आप यह जांच सकते हैं कि क्या आपके प्रोजेक्ट में कोई Kubernetes क्लस्टर मौजूद हैं।

gcloud container clusters list

यदि आपके पास एक क्लस्टर है, तो आप gcloud को अपनी ~/.kube/config फ़ाइल को स्वचालित रूप से कॉन्फ़िगर करने दे सकते हैं। यह फ़ाइल आपको प्रमाणित करने के लिए इस्तेमाल की जाती है जब आप kubectl का उपयोग करते हैं, जो K8s क्लस्टर्स के साथ इंटरैक्ट करने के लिए नेटिव CLI है। इस कमांड को आजमाएं।

gcloud container clusters get-credentials [CLUSTER NAME] --region [REGION]

फिर, उत्पन्न क्रेडेंशियल्स को देखने के लिए ~/.kube/config फाइल को देखें। यह फाइल आपके सक्रिय gcloud सत्र की समान पहचान के आधार पर स्वचालित रूप से एक्सेस टोकन्स को रिफ्रेश करने के लिए उपयोग की जाएगी। इसके लिए निश्चित रूप से सही अनुमतियाँ होना आवश्यक है।

एक बार यह सेट अप हो जाने के बाद, आप निम्नलिखित कमांड को आज़मा सकते हैं ताकि क्लस्टर कॉन्फ़िगरेशन प्राप्त कर सकें।

kubectl cluster-info

आप gcloud के बारे में कंटेनरों के लिए यहाँ और पढ़ सकते हैं।

यह GCP में कुबेरनेट्स को सूचीबद्ध करने के लिए एक सरल स्क्रिप्ट है: https://gitlab.com/gitlab-com/gl-security/security-operations/gl-redteam/gcp_k8s_enum

TLS बूटस्ट्रैप प्रिविलेज एस्केलेशन

शुरुआत में यह प्रिविलेज एस्केलेशन तकनीक ने GKE क्लस्टर के अंदर privesc की अनुमति दी थी, जिससे एक हमलावर को इसे पूरी तरह से समझौता करने की क्षमता मिली थी।

यह इसलिए है क्योंकि GKE मेटाडेटा में TLS बूटस्ट्रैप क्रेडेंशियल्स प्रदान करता है, जो किसी भी पॉड को समझौता करके कोई भी एक्सेस कर सकता है

इस्तेमाल की गई तकनीक निम्नलिखित पोस्ट्स में समझाई गई है:

और यह टूल प्रक्रिया को स्वचालित करने के लिए बनाया गया था: https://github.com/4ARMED/kubeletmein

हालांकि, तकनीक ने इस तथ्य का दुरुपयोग किया कि मेटाडेटा क्रेडेंशियल्स के साथ यह संभव था कि एक CSR (Certificate Signing Request) नए नोड के लिए उत्पन्न किया जाए, जिसे स्वतः स्वीकृत किया जाता था। मेरे परीक्षण में मैंने जांच की कि वे अनुरोध अब स्वतः स्वीकृत नहीं किए जाते हैं, इसलिए मुझे यकीन नहीं है कि यह तकनीक अभी भी मान्य है।

Kubelet API में सीक्रेट्स

इस पोस्ट में यह पता चला कि GKE में एक पॉड के अंदर से एक्सेस किए जाने वाले Kubelet API पते का पता चला जो चल रहे पॉड्स का विवरण देता है:

curl -v -k http://10.124.200.1:10255/pods
शून्य से नायक तक AWS हैकिंग सीखें htARTE (HackTricks AWS रेड टीम एक्सपर्ट) के साथ!

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

Last updated