GCP - Container Privesc

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

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

container

container.clusters.get

यह अनुमति कुबरनेटीज क्लस्टर के लिए क्रेडेंशियल इकट्ठा करने की अनुमति देती है जैसे:

gcloud container clusters get-credentials <cluster_name> --zone <zone>

बिना अतिरिक्त अनुमतियों के, प्रमाण-पत्र बहुत ही मौलिक होते हैं जिससे आप कुछ संसाधनों की सूची बस देख सकते हैं, लेकिन ये वातावरण में गलत-विन्यासों को खोजने में उपयोगी होते हैं।

ध्यान दें कि कुबरनेटीज़ क्लस्टर निजी रूप से कॉन्फ़िगर किए जा सकते हैं, जो इंटरनेट से क्यूब-एपीआई सर्वर तक पहुँच को निषेधित कर देगा।

अगर आपके पास यह अनुमति नहीं है तो आप अभी भी क्लस्टर तक पहुँच सकते हैं, लेकिन आपको अपनी खुद की kubectl कॉन्फ़िग फ़ाइल बनानी होगी जिसमें क्लस्टर की जानकारी होगी। एक नया उत्पन्न हुआ ऐसा दिखता है:

apiVersion: v1
clusters:
- cluster:
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVMRENDQXBTZ0F3SUJBZ0lRRzNaQmJTSVlzeVRPR1FYODRyNDF3REFOQmdrcWhraUc5dzBCQVFzRkFEQXYKTVMwd0t3WURWUVFERXlRMk9UQXhZVEZoWlMweE56ZGxMVFF5TkdZdE9HVmhOaTAzWVdFM01qVmhNR05tTkdFdwpJQmNOTWpJeE1qQTBNakl4T1RJMFdoZ1BNakExTWpFeE1qWXlNekU1TWpSYU1DOHhMVEFyQmdOVkJBTVRKRFk1Ck1ERmhNV0ZsTFRFM04yVXROREkwWmkwNFpXRTJMVGRoWVRjeU5XRXdZMlkwWVRDQ0FhSXdEUVlKS29aSWh2Y04KQVFFQkJRQURnZ0dQQURDQ0FZb0NnZ0dCQU00TWhGemJ3Y3VEQXhiNGt5WndrNEdGNXRHaTZmb0pydExUWkI4Rgo5TDM4a2V2SUVWTHpqVmtoSklpNllnSHg4SytBUHl4RHJQaEhXMk5PczFNMmpyUXJLSHV6M0dXUEtRUmtUWElRClBoMy9MMDVtbURwRGxQK3hKdzI2SFFqdkE2Zy84MFNLakZjRXdKRVhZbkNMMy8yaFBFMzdxN3hZbktwTWdKVWYKVnoxOVhwNEhvbURvOEhUN2JXUTJKWTVESVZPTWNpbDhkdDZQd3FUYmlLNjJoQzNRTHozNzNIbFZxaiszNy90RgpmMmVwUUdFOG90a0VVOFlHQ3FsRTdzaVllWEFqbUQ4bFZENVc5dk1RNXJ0TW8vRHBTVGNxRVZUSzJQWk1rc0hyCmMwbGVPTS9LeXhnaS93TlBRdW5oQ2hnRUJIZTVzRmNxdmRLQ1pmUFovZVI1Qk0vc0w1WFNmTE9sWWJLa2xFL1YKNFBLNHRMVmpiYVg1VU9zMUZIVXMrL3IyL1BKQ2hJTkRaVTV2VjU0L1c5NWk4RnJZaUpEYUVGN0pveXJvUGNuMwpmTmNjQ2x1eGpOY1NsZ01ISGZKRzZqb0FXLzB0b2U3ek05RHlQOFh3NW44Zm5lQm5aVTFnYXNKREZIYVlZbXpGCitoQzFETmVaWXNibWNxOGVPVG9LOFBKRjZ3SURBUUFCbzBJd1FEQU9CZ05WSFE4QkFmOEVCQU1DQWdRd0R3WUQKVlIwVEFRSC9CQVV3QXdFQi96QWRCZ05WSFE0RUZnUVU5UkhvQXlxY3RWSDVIcmhQZ1BjYzF6Sm9kWFV3RFFZSgpLb1pJaHZjTkFRRUxCUUFEZ2dHQkFLbnp3VEx0QlJBVE1KRVB4TlBNbmU2UUNqZDJZTDgxcC9oeVc1eWpYb2w5CllkMTRRNFVlVUJJVXI0QmJadzl0LzRBQ3ZlYUttVENaRCswZ2wyNXVzNzB3VlFvZCtleVhEK2I1RFBwUUR3Z1gKbkJLcFFCY1NEMkpvZ29tT3M3U1lPdWVQUHNrODVvdWEwREpXLytQRkY1WU5ublc3Z1VLT2hNZEtKcnhuYUVGZAprVVl1TVdPT0d4U29qVndmNUsyOVNCbGJ5YXhDNS9tOWkxSUtXV2piWnZPN0s4TTlYLytkcDVSMVJobDZOSVNqCi91SmQ3TDF2R0crSjNlSjZneGs4U2g2L28yRnhxZWFNdDladWw4MFk4STBZaGxXVmlnSFMwZmVBUU1NSzUrNzkKNmozOWtTZHFBYlhPaUVOMzduOWp2dVlNN1ZvQzlNUk1oYUNyQVNhR2ZqWEhtQThCdlIyQW5iQThTVGpQKzlSMQp6VWRpK3dsZ0V4bnFvVFpBcUVHRktuUTlQcjZDaDYvR0xWWStqYXhuR3lyUHFPYlpNZTVXUDFOUGs4NkxHSlhCCjc1elFvanEyRUpxanBNSjgxT0gzSkxOeXRTdmt4UDFwYklxTzV4QUV0OWxRMjh4N28vbnRuaWh1WmR6M0lCRU8KODdjMDdPRGxYNUJQd0hIdzZtKzZjUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
server: https://34.123.141.28
name: gke_security-devbox_us-central1_autopilot-cluster-1
contexts:
- context:
cluster: gke_security-devbox_us-central1_autopilot-cluster-1
user: gke_security-devbox_us-central1_autopilot-cluster-1
name: gke_security-devbox_us-central1_autopilot-cluster-1
current-context: gke_security-devbox_us-central1_autopilot-cluster-1
kind: Config
preferences: {}
users:
- name: gke_security-devbox_us-central1_autopilot-cluster-1
user:
auth-provider:
config:
access-token: <access token>
cmd-args: config config-helper --format=json
cmd-path: gcloud
expiry: "2022-12-06T01:13:11Z"
expiry-key: '{.credential.token_expiry}'
token-key: '{.credential.access_token}'
name: gcp

container.roles.escalate | container.clusterRoles.escalate

कुबरनेटीस डिफ़ॉल्ट रूप से प्रिंसिपल्स को रोल्स और क्लस्टर रोल्स बनाने या अपडेट करने से रोकता है जिनमें प्रिंसिपल के पास से अधिक अनुमतियाँ हो। हालांकि, ऐसे जीसीपी प्रिंसिपल को उन अनुमतियों के साथ रोल्स/क्लस्टर रोल्स बनाने/अपडेट करने की अनुमति होगी जिनमें उसके पास अधिक अनुमतियाँ नहीं हैं, इस तरह कुबरनेटीस की इस व्यवहार के खिलाफ सुरक्षा को छलना कर सकता है।

container.roles.create और/या container.roles.update या container.clusterRoles.create और/या container.clusterRoles.update भी इन विशेषाधिकार उन्हें करने के लिए आवश्यक हैं।

container.roles.bind | container.clusterRoles.bind

कुबरनेटीस डिफ़ॉल्ट रूप से प्रिंसिपल्स को रोल बाइंडिंग्स और क्लस्टर रोल बाइंडिंग्स बनाने या अपडेट करने से रोकता है जिनमें प्रिंसिपल के पास से अधिक अनुमतियाँ हो। हालांकि, ऐसे जीसीपी प्रिंसिपल को उन अनुमतियों के साथ रोल बाइंडिंग्स/क्लस्टर रोल बाइंडिंग्स बनाने/अपडेट करने की अनुमति होगी जिनमें उसके पास अधिक अनुमतियाँ नहीं हैं, इस तरह कुबरनेटीस की इस व्यवहार के खिलाफ सुरक्षा को छलना कर सकता है।

container.roleBindings.create और/या container.roleBindings.update या container.clusterRoleBindings.create और/या container.clusterRoleBindings.update भी इन विशेषाधिकार उन्हें करने के लिए आवश्यक हैं।

container.cronJobs.create | container.cronJobs.update | container.daemonSets.create | container.daemonSets.update | container.deployments.create | container.deployments.update | container.jobs.create | container.jobs.update | container.pods.create | container.pods.update | container.replicaSets.create | container.replicaSets.update | container.replicationControllers.create | container.replicationControllers.update | container.scheduledJobs.create | container.scheduledJobs.update | container.statefulSets.create | container.statefulSets.update

इन सभी अनुमतियों से आपको एक संसाधन बनाने या अपडेट करने की अनुमति होगी जहाँ आप एक पॉड को परिभाषित कर सकते हैं। एक पॉड परिभाषित करते समय आप स्पष्ट कर सकते हैं कि कौन सा सेवा खाता जोड़ा जाएगा और कौन सी छवि चलाई जाएगी, इसलिए आप एक छवि चला सकते हैं जो एसए का टोकन आपके सर्वर को छलकाएगी जिससे आप किसी भी सेवा खाते की ओर उन्नति कर सकते हैं।

जैसा कि हम जीसीपी वातावरण में हैं, आप मेटाडेटा सेवा से नोडपूल जीसीपी एसए को प्राप्त कर सकेंगे और जीसीपी में अधिकारों को उन्नत कर सकेंगे (डिफ़ॉल्ट रूप से कंप्यूट एसए का उपयोग किया जाता है)।

container.secrets.get | container.secrets.list

इन अनुमतियों के साथ आप कुबरनेटीस के सभी एसए के टोकन पढ़ सकते हैं, इसलिए आप उन्हें उन्नत कर सकते हैं।

container.pods.exec

इस अनुमति के साथ आप पॉड में एक्सीक्यूट कर सकेंगे, जिससे आपको पॉड में चल रहे सभी कुबरनेटीस एसए तक पहुंच मिलेगी जिससे आप कुबरनेटीस में अधिकारों को उन्नत कर सकेंगे, लेकिन आप नोडपूल का जीसीपी सेवा खाता भी चुरा सकेंगे, जिससे जीसीपी में अधिकारों को उन्नत कर सकेंगे।

container.pods.portForward

इन अनुमतियों के साथ आप पॉड में चल रही स्थानीय सेवाओं तक पहुंच सकते हैं जो आपको कुबरनेटीस में अधिकारों को उन्नत करने की अनुमति देती हैं (और जीसीपी में भी अगर आप किसी तरह से मेटाडेटा सेवा से बात करने में सफल हो जाते हैं)।

container.serviceAccounts.createToken

इस अनुमति के नाम के कारण, ऐसा लगता है कि यह आपको कुबरनेटीस सेवा खातों के टोकन उत्पन्न करने की अनुमति देगा, इसलिए आप कुबरनेटीस के भीतर किसी भी एसए तक पहुंच सकेंगे। हालांकि, मैंने कोई एपीआई एंडपॉइंट नहीं मिला, इसलिए अगर आपको मिलता है तो मुझे बताएं।

container.mutatingWebhookConfigurations.create | container.mutatingWebhookConfigurations.update

ये अनुमतियाँ आपको कुबरनेटीस में अधिकारों को उन्नत करने की अनुमति देने के साथ-साथ, आप उन्हें क्लस्टर में स्थायी रूप से रहने के लिए भी दुरुपयोग कर सकते हैं।

अधिक जानकारी के लिए इस लिंक का पालन करें.

Last updated