GCP - Containers & GKE Enum

हैकट्रिक्स का समर्थन करें

कंटेनर

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>

विशेषाधिकार

निम्नलिखित पृष्ठ पर जांच सकते हैं कि विशेषाधिकार को उन्नत करने के लिए कंटेनर अनुमतियों का दुरुपयोग कैसे करें:

GCP - Container Privesc

नोड पूल

ये मशीनों (नोड्स) का समूह हैं जो कुबरनेटीज़ क्लस्टर बनाते हैं।

# 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>

कुबरनेटीस

कुबरनेटीस क्या है इसके बारे में जानकारी के लिए इस पेज की जाँच करें:

Kubernetes Pentesting

``` gcloud container clusters list ``` यदि आपके पास एक क्लस्टर है, तो आप `gcloud` को स्वचालित रूप से अपनी `~/.kube/config` फ़ाइल कॉन्फ़िगर करने दे सकते हैं। इस फ़ाइल का उपयोग आपकी पहचान सत्यापित करने के लिए किया जाता है जब आप [kubectl](https://kubernetes.io/docs/reference/kubectl/overview/) का उपयोग करते हैं, जो 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 (सर्टिफिकेट साइनिंग अनुरोध) उत्पन्न करना संभव था, जो स्वचालित रूप से मंजूर किया गया था। मेरे परीक्षण में मैंने जांचा कि वे अब अधिकारिक रूप से स्वचालित नहीं हैं, इसलिए मुझे यकीन नहीं है कि यह तकनीक अब भी वैध है।

Kubelet API में रहस्य

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

curl -v -k http://10.124.200.1:10255/pods

यदि API संसाधनों को संशोधित करने की अनुमति नहीं देता है, तो प्रतिक्रिया में संवेदनशील जानकारी खोजना संभव हो सकता है। /pods एंडप्विंट Kiterunner का उपयोग करके पाया गया था।

Last updated