GCP - Container Privesc
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
container.clusters.get
यह अनुमति Kubernetes क्लस्टर के लिए क्रेडेंशियल्स इकट्ठा करने की अनुमति देती है, जैसे:
बिना अतिरिक्त अनुमतियों के, क्रेडेंशियल्स काफी बुनियादी होते हैं क्योंकि आप कुछ संसाधनों की सूची बना सकते हैं, लेकिन ये वातावरण में गलत कॉन्फ़िगरेशन खोजने के लिए उपयोगी होते हैं।
ध्यान दें कि क्यूबेरनेट्स क्लस्टर को निजी रूप से कॉन्फ़िगर किया जा सकता है, जो इंटरनेट से Kube-API सर्वर तक पहुंच को अस्वीकार करेगा।
यदि आपके पास यह अनुमति नहीं है, तो आप अभी भी क्लस्टर तक पहुंच सकते हैं, लेकिन आपको क्लस्टर की जानकारी के साथ अपना खुद का kubectl कॉन्फ़िग फ़ाइल बनाना होगा। एक नया उत्पन्न किया गया फ़ाइल इस तरह दिखता है:
container.roles.escalate
| container.clusterRoles.escalate
Kubernetes डिफ़ॉल्ट रूप से रोकता है कि प्रिंसिपल निर्माण या अपडेट Roles और ClusterRoles को अधिक अनुमतियों के साथ कर सकें जो प्रिंसिपल के पास हैं। हालाँकि, एक GCP प्रिंसिपल जिसके पास वह अनुमतियाँ हैं, वह अधिक अनुमतियों के साथ Roles/ClusterRoles को निर्माण/अपडेट करने में सक्षम होगा, प्रभावी रूप से इस व्यवहार के खिलाफ Kubernetes की सुरक्षा को बायपास करते हुए।
container.roles.create
और/या container.roles.update
या container.clusterRoles.create
और/या container.clusterRoles.update
क्रमशः उन विशेषाधिकार वृद्धि क्रियाओं को करने के लिए भी आवश्यक हैं।
container.roles.bind
| container.clusterRoles.bind
Kubernetes डिफ़ॉल्ट रूप से रोकता है कि प्रिंसिपल निर्माण या अपडेट RoleBindings और ClusterRoleBindings को अधिक अनुमतियों के साथ कर सकें जो प्रिंसिपल के पास हैं। हालाँकि, एक GCP प्रिंसिपल जिसके पास वह अनुमतियाँ हैं, वह अधिक अनुमतियों के साथ RolesBindings/ClusterRolesBindings को निर्माण/अपडेट करने में सक्षम होगा, प्रभावी रूप से इस व्यवहार के खिलाफ Kubernetes की सुरक्षा को बायपास करते हुए।
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
इन सभी अनुमतियों से आपको एक संसाधन बनाने या अपडेट करने की अनुमति मिलेगी जहाँ आप एक पोड को परिभाषित कर सकते हैं। एक पोड को परिभाषित करते समय आप SA को निर्धारित कर सकते हैं जो संलग्न होने जा रहा है और छवि जो चलने वाली है, इसलिए आप एक छवि चला सकते हैं जो SA के टोकन को आपके सर्वर पर एक्सफिल्ट्रेट करेगी जिससे आप किसी भी सेवा खाते में वृद्धि कर सकें। अधिक जानकारी के लिए देखें:
चूंकि हम एक GCP वातावरण में हैं, आप मेटाडेटा सेवा से नोडपूल GCP SA को भी प्राप्त कर सकेंगे और GCP में विशेषाधिकार बढ़ा सकेंगे (डिफ़ॉल्ट रूप से कंप्यूट SA का उपयोग किया जाता है)।
container.secrets.get
| container.secrets.list
जैसा कि इस पृष्ठ में समझाया गया है, इन अनुमतियों के साथ आप कुबेरनेट्स के सभी SA के टोकन को पढ़ सकते हैं, इसलिए आप उनके लिए विशेषाधिकार बढ़ा सकते हैं।
container.pods.exec
इस अनुमति के साथ आप पोड्स में exec करने में सक्षम होंगे, जो आपको पोड्स में चल रहे सभी Kubernetes SA तक पहुँच देता है ताकि आप K8s के भीतर विशेषाधिकार बढ़ा सकें, लेकिन आप NodePool का GCP सेवा खाता भी चुरा सकते हैं, GCP में विशेषाधिकार बढ़ाते हुए।
container.pods.portForward
जैसा कि इस पृष्ठ में समझाया गया है, इन अनुमतियों के साथ आप पोड्स में चल रहे स्थानीय सेवाओं तक पहुँच सकते हैं जो आपको Kubernetes में विशेषाधिकार बढ़ाने की अनुमति दे सकते हैं (और GCP में यदि आप किसी तरह मेटाडेटा सेवा से बात करने में सफल होते हैं)।
container.serviceAccounts.createToken
अनुमति के नाम के कारण, यह लगता है कि यह आपको K8s सेवा खातों के टोकन उत्पन्न करने की अनुमति देगा, इसलिए आप Kubernetes के भीतर किसी भी SA के लिए privesc कर सकेंगे। हालाँकि, मैं इसका उपयोग करने के लिए कोई API एंडपॉइंट नहीं ढूंढ सका, इसलिए मुझे बताएं यदि आप इसे ढूंढते हैं।
container.mutatingWebhookConfigurations.create
| container.mutatingWebhookConfigurations.update
ये अनुमतियाँ आपको Kubernetes में विशेषाधिकार बढ़ाने की अनुमति दे सकती हैं, लेकिन अधिक संभावना है, आप उनका दुरुपयोग करके क्लस्टर में स्थायी रूप से बने रह सकते हैं। अधिक जानकारी के लिए इस लिंक का पालन करें.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)