AWS - ECS Post Exploitation

Support HackTricks

ECS

For more information check:

AWS - ECS Enum

Host IAM Roles

W ECS rola IAM może być przypisana do zadania działającego w kontenerze. Jeśli zadanie jest uruchamiane w instancji EC2, instancja EC2 będzie miała inną rolę IAM przypisaną do niej. Co oznacza, że jeśli uda ci się skomprymować instancję ECS, możesz potencjalnie uzyskać rolę IAM przypisaną do ECR i do instancji EC2. Aby uzyskać więcej informacji na temat tego, jak zdobyć te dane uwierzytelniające, sprawdź:

Zauważ, że jeśli instancja EC2 wymusza IMDSv2, zgodnie z dokumentacją, odpowiedź na żądanie PUT będzie miała limit skoków równy 1, co uniemożliwia dostęp do metadanych EC2 z kontenera wewnątrz instancji EC2.

Privesc to node to steal other containers creds & secrets

Ale co więcej, EC2 używa dockera do uruchamiania zadań ECs, więc jeśli możesz uciec do węzła lub uzyskać dostęp do gniazda dockera, możesz sprawdzić, które inne kontenery są uruchamiane, a nawet dostać się do nich i ukraść ich przypisane role IAM.

Making containers run in current host

Ponadto, rola instancji EC2 zazwyczaj będzie miała wystarczające uprawnienia do aktualizacji stanu instancji kontenera instancji EC2 używanych jako węzły w klastrze. Atakujący mógłby zmodyfikować stan instancji na DRAINING, wtedy ECS usunie wszystkie zadania z niej, a te uruchamiane jako REPLICA będą uruchamiane w innej instancji, potencjalnie wewnątrz instancji atakującego, aby mógł ukraść ich role IAM i potencjalnie wrażliwe informacje z wnętrza kontenera.

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

Ta sama technika może być wykonana przez wyrejestrowanie instancji EC2 z klastra. To jest potencjalnie mniej ukryte, ale wymusi uruchomienie zadań na innych instancjach:

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

Ostatnią techniką wymuszającą ponowne wykonanie zadań jest wskazanie ECS, że zadanie lub kontener został zatrzymany. Istnieją 3 potencjalne interfejsy API, aby to zrobić:

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

Kradnij wrażliwe informacje z kontenerów ECR

Instancja EC2 prawdopodobnie będzie miała również uprawnienie ecr:GetAuthorizationToken, co pozwala na pobieranie obrazów (możesz szukać w nich wrażliwych informacji).

Support HackTricks

Last updated