AWS - ECS Post Exploitation

Support HackTricks

ECS

Für weitere Informationen siehe:

Host IAM-Rollen

In ECS kann eine IAM-Rolle der Aufgabe zugewiesen werden, die innerhalb des Containers ausgeführt wird. Wenn die Aufgabe innerhalb einer EC2-Instanz ausgeführt wird, hat die EC2-Instanz eine andere IAM-Rolle angehängt. Das bedeutet, dass, wenn es dir gelingt, eine ECS-Instanz zu kompromittieren, du potenziell die IAM-Rolle, die mit dem ECR und der EC2-Instanz verbunden ist, erhalten kannst. Für weitere Informationen, wie du diese Anmeldeinformationen erhalten kannst, siehe:

Beachte, dass, wenn die EC2-Instanz IMDSv2 durchsetzt, laut den Dokumenten, die Antwort der PUT-Anfrage ein Hop-Limit von 1 haben wird, was es unmöglich macht, auf die EC2-Metadaten von einem Container innerhalb der EC2-Instanz zuzugreifen.

Privilegieneskalation zum Knoten, um Anmeldeinformationen und Geheimnisse anderer Container zu stehlen

Darüber hinaus verwendet EC2 Docker, um ECs-Aufgaben auszuführen. Wenn du also zum Knoten entkommen oder auf den Docker-Socket zugreifen kannst, kannst du überprüfen, welche anderen Container ausgeführt werden, und sogar in sie hineingehen und ihre angehängten IAM-Rollen stehlen.

Container auf dem aktuellen Host ausführen

Darüber hinaus hat die EC2-Instanzrolle normalerweise genügend Berechtigungen, um den Zustand der Containerinstanz der EC2-Instanzen, die als Knoten im Cluster verwendet werden, zu aktualisieren. Ein Angreifer könnte den Zustand einer Instanz auf DRAINING ändern, dann wird ECS alle Aufgaben von ihr entfernen und die, die als REPLICA ausgeführt werden, werden in einer anderen Instanz ausgeführt, möglicherweise innerhalb der Instanz des Angreifers, sodass er ihre IAM-Rollen und potenziell sensible Informationen aus dem Container stehlen kann.

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

Die gleiche Technik kann durch das Abmelden der EC2-Instanz vom Cluster durchgeführt werden. Dies ist potenziell weniger heimlich, aber es wird die Aufgaben zwingen, auf anderen Instanzen ausgeführt zu werden:

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

Eine letzte Technik, um die erneute Ausführung von Aufgaben zu erzwingen, besteht darin, ECS anzuzeigen, dass der Task oder Container gestoppt wurde. Es gibt 3 potenzielle APIs, um dies zu tun:

# 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 ...

Sensible Informationen aus ECR-Containern stehlen

Die EC2-Instanz hat wahrscheinlich auch die Berechtigung ecr:GetAuthorizationToken, die es ihr ermöglicht, Bilder herunterzuladen (du könntest nach sensiblen Informationen darin suchen).

Unterstütze HackTricks

Last updated