AWS - ECS Post Exploitation

Lernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

ECS

Für weitere Informationen siehe:

pageAWS - ECS Enum

Host-IAM-Rollen

In ECS kann einer IAM-Rolle die Aufgabe zugewiesen werden, die im Container ausgeführte Aufgabe. Wenn die Aufgabe in einer EC2-Instanz ausgeführt wird, wird der EC2-Instanz eine weitere IAM-Rolle zugewiesen. Das bedeutet, dass Sie, wenn es Ihnen gelingt, eine ECS-Instanz zu kompromittieren, potenziell die IAM-Rolle, die dem ECR und der EC2-Instanz zugeordnet ist, erhalten können. Weitere Informationen dazu, wie Sie diese Anmeldeinformationen erhalten können, finden Sie unter:

Beachten Sie, dass, wenn die EC2-Instanz IMDSv2 durchsetzt, gemäß der Dokumentation, die Antwort auf die PUT-Anfrage eine Hop-Limit von 1 haben wird, was es unmöglich macht, auf die EC2-Metadaten von einem Container innerhalb der EC2-Instanz zuzugreifen.

Privilege Eskalation zum Knoten, um Anmeldeinformationen und Geheimnisse anderer Container zu stehlen

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

Ausführen von Containern im aktuellen Host

Darüber hinaus wird die EC2-Instanzrolle in der Regel über ausreichende Berechtigungen verfügen, um den Status der Containerinstanz zu aktualisieren, der von den als Knoten in dem Cluster verwendeten EC2-Instanzen verwendet wird. Ein Angreifer könnte den Status einer Instanz auf DRAINING ändern, dann wird ECS alle Aufgaben daraus entfernen, und diejenigen, die als REPLICA ausgeführt werden, werden in einer anderen Instanz ausgeführt, möglicherweise in der Instanz des Angreifers, damit 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 Deregistrieren der EC2-Instanz aus dem Cluster durchgeführt werden. Dies ist potenziell weniger unauffällig, aber es wird die Tasks dazu 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 mitzuteilen, dass die Aufgabe oder der 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 wird wahrscheinlich auch die Berechtigung ecr:GetAuthorizationToken haben, die es ihr ermöglicht, Images herunterzuladen (Sie könnten nach sensiblen Informationen darin suchen).

Last updated