AWS - ECS Privesc
ECS
ECS के बारे में अधिक जानकारी:
iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:RunTask
iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:RunTask
एक हमलावर जो iam:PassRole
, ecs:RegisterTaskDefinition
और ecs:RunTask
अनुमति का दुरुपयोग करता है, वह एक नया टास्क परिभाषा बनाने में सक्षम हो सकता है जिसमें एक दुष्ट कंटेनर होता है जो मेटाडेटा क्रेडेंशियल्स को चुराता है और इसे चलाता है।
संभावित प्रभाव: एक अलग ECS भूमिका में सीधे प्रिवेस्क।
iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:StartTask
iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:StartTask
पिछले उदाहरण की तरह, एक हमलावर iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:StartTask
अनुमतियों का दुरुपयोग करके ECS में एक नया कार्य परिभाषा उत्पन्न कर सकता है जिसमें एक दुष्ट कंटेनर होता है जो मेटाडेटा क्रेडेंशियल्स चुराता है और इसे चलाता है।
हालांकि, इस मामले में, दुष्ट कार्य परिभाषा को चलाने के लिए एक कंटेनर उदाहरण होना चाहिए।
संभावित प्रभाव: किसी भी ECS भूमिका के लिए सीधे प्रिवेस्क।
iam:PassRole
, ecs:RegisterTaskDefinition
, (ecs:UpdateService|ecs:CreateService)
iam:PassRole
, ecs:RegisterTaskDefinition
, (ecs:UpdateService|ecs:CreateService)
पिछले उदाहरण की तरह, एक हमलावर iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:UpdateService
या ecs:CreateService
अनुमतियों का दुरुपयोग करके ECS में एक नया कार्य परिभाषा उत्पन्न कर सकता है जिसमें एक दुष्ट कंटेनर होता है जो मेटाडेटा क्रेडेंशियल्स चुराता है और इसे चलाने के लिए कम से कम 1 कार्य चलाते हुए एक नई सेवा बनाकर।
संभावित प्रभाव: किसी भी ECS भूमिका के लिए सीधे प्रिवेस्क।
iam:PassRole
, (ecs:UpdateService|ecs:CreateService)
iam:PassRole
, (ecs:UpdateService|ecs:CreateService)
वास्तव में, केवल उन अनुमतियों के साथ, यह ओवरराइड्स का उपयोग करके किसी कंटेनर में किसी भी भूमिका के साथ मनमाने आदेश निष्पादित करना संभव है जैसे:
संभावित प्रभाव: किसी भी ECS भूमिका के लिए सीधे प्रिवेस्क।
ecs:RegisterTaskDefinition
, (ecs:RunTask|ecs:StartTask|ecs:UpdateService|ecs:CreateService)
ecs:RegisterTaskDefinition
, (ecs:RunTask|ecs:StartTask|ecs:UpdateService|ecs:CreateService)
यह परिदृश्य पिछले वाले के समान है लेकिन iam:PassRole
अनुमति के बिना।
यह अभी भी दिलचस्प है क्योंकि यदि आप एक मनमाना कंटेनर चला सकते हैं, भले ही यह बिना भूमिका के हो, आप एक विशेषाधिकार प्राप्त कंटेनर चला सकते हैं ताकि नोड पर भाग जाएं और EC2 IAM भूमिका और अन्य ECS कंटेनरों की भूमिकाएं चुरा सकें जो नोड पर चल रही हैं।
आप यहां तक कि अन्य कार्यों को EC2 उदाहरण के अंदर चलाने के लिए मजबूर कर सकते हैं जिसे आप समझौता करते हैं ताकि उनकी क्रेडेंशियल्स चुरा सकें (जैसा कि नोड अनुभाग में प्रिवेस्क में चर्चा की गई है)।
यह हमला केवल तभी संभव है जब ECS क्लस्टर EC2 उदाहरणों का उपयोग कर रहा हो और Fargate का नहीं।
ecs:ExecuteCommand
, ecs:DescribeTasks,
(ecs:RunTask|ecs:StartTask|ecs:UpdateService|ecs:CreateService)
ecs:ExecuteCommand
, ecs:DescribeTasks,
(ecs:RunTask|ecs:StartTask|ecs:UpdateService|ecs:CreateService)
एक हमलावर के पास ecs:ExecuteCommand
, ecs:DescribeTasks
है जिससे वह कमांड्स को एक चल रहे कंटेनर के अंदर निष्पादित कर सकता है और इससे जुड़े IAM भूमिका को एक्सफिल्ट्रेट कर सकता है (आपको विवरण अनुमतियों की आवश्यकता है क्योंकि aws ecs execute-command
चलाने के लिए यह आवश्यक है)।
हालांकि, ऐसा करने के लिए, कंटेनर इंस्टेंस को ExecuteCommand एजेंट चला रहा होना चाहिए (जो डिफ़ॉल्ट रूप से नहीं होता है)।
इसलिए, हमलावर कोशिश कर सकता है:
हर चल रहे कंटेनर में एक कमांड चलाने की कोशिश करें
यदि उसके पास
ecs:RunTask
है, तोaws ecs run-task --enable-execute-command [...]
के साथ एक कार्य चलाएँ।यदि उसके पास
ecs:StartTask
है, तोaws ecs start-task --enable-execute-command [...]
के साथ एक कार्य चलाएँ।यदि उसके पास
ecs:CreateService
है, तोaws ecs create-service --enable-execute-command [...]
के साथ एक सेवा बनाएँ।यदि उसके पास
ecs:UpdateService
है, तोaws ecs update-service --enable-execute-command [...]
के साथ एक सेवा अपडेट करें।
आप पिछले ECS privesc अनुभागों में इन विकल्पों के उदाहरण पा सकते हैं।
संभावित प्रभाव: कंटेनरों से जुड़े एक अलग भूमिका में privesc।
ssm:StartSession
ssm:StartSession
देखें कि आप ssm privesc पृष्ठ में इस अनुमति का दुरुपयोग कैसे कर सकते हैं ताकि ECS में privesc हो सके:
iam:PassRole
, ec2:RunInstances
iam:PassRole
, ec2:RunInstances
देखें कि आप ec2 privesc पृष्ठ में इन अनुमतियों का दुरुपयोग कैसे कर सकते हैं ताकि ECS में privesc हो सके:
?ecs:RegisterContainerInstance
?ecs:RegisterContainerInstance
TODO: क्या किसी अन्य AWS खाते से एक उदाहरण पंजीकृत करना संभव है ताकि कार्य उन मशीनों के तहत चलाए जाएं जो हमलावर द्वारा नियंत्रित हैं??
ecs:CreateTaskSet
, ecs:UpdateServicePrimaryTaskSet
, ecs:DescribeTaskSets
ecs:CreateTaskSet
, ecs:UpdateServicePrimaryTaskSet
, ecs:DescribeTaskSets
TODO: इसे परीक्षण करें
एक हमलावर जिसके पास अनुमतियाँ ecs:CreateTaskSet
, ecs:UpdateServicePrimaryTaskSet
, और ecs:DescribeTaskSets
हैं, वह एक मौजूदा ECS सेवा के लिए एक दुर्भावनापूर्ण कार्य सेट बना सकता है और प्राथमिक कार्य सेट को अपडेट कर सकता है। इससे हमलावर को सेवा के भीतर मनमाना कोड निष्पादित करने की अनुमति मिलती है।
संभावित प्रभाव: प्रभावित सेवा में मनचाहा कोड निष्पादित करें, जो इसकी कार्यक्षमता को प्रभावित कर सकता है या संवेदनशील डेटा को एक्सफिल्ट्रेट कर सकता है।
संदर्भ
Last updated