AWS - ECS Post Exploitation

Support HackTricks

ECS

For more information check:

AWS - ECS Enum

Host IAM Roles

ECS में एक IAM भूमिका कार्य को कंटेनर के अंदर चलाने के लिए असाइन की जा सकती है। यदि कार्य एक EC2 उदाहरण के अंदर चलाया जाता है, तो EC2 उदाहरण के साथ एक और IAM भूमिका जुड़ी होगी। इसका मतलब है कि यदि आप एक ECS उदाहरण को समझौता करने में सफल होते हैं, तो आप संभावित रूप से ECR और EC2 उदाहरण से संबंधित IAM भूमिका प्राप्त कर सकते हैं। उन क्रेडेंशियल्स को प्राप्त करने के तरीके के बारे में अधिक जानकारी के लिए देखें:

ध्यान दें कि यदि EC2 उदाहरण IMDSv2 को लागू कर रहा है, दस्तावेज़ों के अनुसार, PUT अनुरोध का उत्तर में हॉप सीमा 1 होगी, जिससे EC2 उदाहरण के अंदर एक कंटेनर से EC2 मेटाडेटा तक पहुंचना असंभव हो जाएगा।

Privesc to node to steal other containers creds & secrets

लेकिन इसके अलावा, EC2 ECs कार्यों को चलाने के लिए डॉकर का उपयोग करता है, इसलिए यदि आप नोड पर भागने या डॉकर सॉकेट तक पहुंचने में सक्षम हैं, तो आप चेक कर सकते हैं कि अन्य कंटेनर कौन से चल रहे हैं, और यहां तक कि उनमें प्रवेश कर सकते हैं और उनकी IAM भूमिकाएँ चुरा सकते हैं।

Making containers run in current host

इसके अलावा, EC2 उदाहरण की भूमिका आमतौर पर क्लस्टर के अंदर नोड्स के रूप में उपयोग किए जा रहे EC2 उदाहरणों की कंटेनर उदाहरण स्थिति को अपडेट करने के लिए पर्याप्त अनुमतियाँ रखेगी। एक हमलावर DRAINING के लिए एक उदाहरण की स्थिति को संशोधित कर सकता है, फिर ECS इससे सभी कार्यों को हटा देगा और जो REPLICA के रूप में चल रहे हैं, उन्हें एक अलग उदाहरण में चलाया जाएगा, संभावित रूप से हमलावर के उदाहरण के अंदर ताकि वह उनकी IAM भूमिकाएँ और संभावित संवेदनशील जानकारी को कंटेनर के अंदर से चुरा सके।

aws ecs update-container-instances-state \
--cluster <cluster> --status DRAINING --container-instances <container-instance-id>

क्लस्टर से EC2 इंस्टेंस को डीरजिस्टर करके यही तकनीक की जा सकती है। यह संभावित रूप से कम छिपी हुई है लेकिन यह अन्य इंस्टेंस में कार्यों को चलाने के लिए मजबूर करेगा:

aws ecs deregister-container-instance \
--cluster <cluster> --container-instance <container-instance-id> --force

एक अंतिम तकनीक कार्यों को फिर से निष्पादित करने के लिए ECS को यह संकेत देना है कि कार्य या कंटेनर बंद हो गया। इसे करने के लिए 3 संभावित APIs हैं:

# Needs: ecs:SubmitTaskStateChange
aws ecs submit-task-state-change --cluster <value> \
--status STOPPED --reason "anything" --containers [...]

# Needs: ecs:SubmitContainerStateChange
aws ecs submit-container-state-change ...

# Needs: ecs:SubmitAttachmentStateChanges
aws ecs submit-attachment-state-changes ...

ECR कंटेनरों से संवेदनशील जानकारी चुराना

EC2 उदाहरण के पास संभवतः ecr:GetAuthorizationToken अनुमति होगी, जिससे इसे इमेज डाउनलोड करने की अनुमति मिलेगी (आप इनमें संवेदनशील जानकारी के लिए खोज कर सकते हैं)।

Support HackTricks

Last updated