GCP - Container Privesc
container
container.clusters.get
container.clusters.get
यह अनुमति कुबरनेटीज क्लस्टर के लिए क्रेडेंशियल इकट्ठा करने की अनुमति देती है जैसे:
बिना अतिरिक्त अनुमतियों के, प्रमाण-पत्र बहुत ही मौलिक होते हैं जिससे आप कुछ संसाधनों की सूची बस देख सकते हैं, लेकिन ये वातावरण में गलत-विन्यासों को खोजने में उपयोगी होते हैं।
ध्यान दें कि कुबरनेटीज़ क्लस्टर निजी रूप से कॉन्फ़िगर किए जा सकते हैं, जो इंटरनेट से क्यूब-एपीआई सर्वर तक पहुँच को निषेधित कर देगा।
अगर आपके पास यह अनुमति नहीं है तो आप अभी भी क्लस्टर तक पहुँच सकते हैं, लेकिन आपको अपनी खुद की kubectl कॉन्फ़िग फ़ाइल बनानी होगी जिसमें क्लस्टर की जानकारी होगी। एक नया उत्पन्न हुआ ऐसा दिखता है:
container.roles.escalate
| container.clusterRoles.escalate
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.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.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.secrets.get
| container.secrets.list
इन अनुमतियों के साथ आप कुबरनेटीस के सभी एसए के टोकन पढ़ सकते हैं, इसलिए आप उन्हें उन्नत कर सकते हैं।
container.pods.exec
container.pods.exec
इस अनुमति के साथ आप पॉड में एक्सीक्यूट कर सकेंगे, जिससे आपको पॉड में चल रहे सभी कुबरनेटीस एसए तक पहुंच मिलेगी जिससे आप कुबरनेटीस में अधिकारों को उन्नत कर सकेंगे, लेकिन आप नोडपूल का जीसीपी सेवा खाता भी चुरा सकेंगे, जिससे जीसीपी में अधिकारों को उन्नत कर सकेंगे।
container.pods.portForward
container.pods.portForward
इन अनुमतियों के साथ आप पॉड में चल रही स्थानीय सेवाओं तक पहुंच सकते हैं जो आपको कुबरनेटीस में अधिकारों को उन्नत करने की अनुमति देती हैं (और जीसीपी में भी अगर आप किसी तरह से मेटाडेटा सेवा से बात करने में सफल हो जाते हैं)।
container.serviceAccounts.createToken
container.serviceAccounts.createToken
इस अनुमति के नाम के कारण, ऐसा लगता है कि यह आपको कुबरनेटीस सेवा खातों के टोकन उत्पन्न करने की अनुमति देगा, इसलिए आप कुबरनेटीस के भीतर किसी भी एसए तक पहुंच सकेंगे। हालांकि, मैंने कोई एपीआई एंडपॉइंट नहीं मिला, इसलिए अगर आपको मिलता है तो मुझे बताएं।
container.mutatingWebhookConfigurations.create
| container.mutatingWebhookConfigurations.update
container.mutatingWebhookConfigurations.create
| container.mutatingWebhookConfigurations.update
ये अनुमतियाँ आपको कुबरनेटीस में अधिकारों को उन्नत करने की अनुमति देने के साथ-साथ, आप उन्हें क्लस्टर में स्थायी रूप से रहने के लिए भी दुरुपयोग कर सकते हैं।
अधिक जानकारी के लिए इस लिंक का पालन करें.
Last updated