AWS - ECS Post Exploitation

Dowiedz się, jak hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

ECS

Aby uzyskać więcej informacji, sprawdź:

pageAWS - ECS Enum

Host IAM Roles

W ECS roli IAM można przypisać zadanie uruchamiane wewnątrz kontenera. Jeśli zadanie jest uruchamiane wewnątrz instancji EC2, instancja EC2 będzie miała przypisaną inną rolę IAM. Oznacza to, że jeśli uda ci się skompromitować instancję ECS, możesz potencjalnie uzyskać rolę IAM powiązaną z ECR i instancją EC2. Aby uzyskać więcej informacji na temat sposobu uzyskania tych poświadczeń, sprawdź:

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

Przywłaszczenie uprawnień do węzła w celu kradzieży poświadczeń i poufnych informacji z innych kontenerów

Ponadto, EC2 używa dockera do uruchamiania zadań ECS, więc jeśli uda ci się uciec do węzła lub uzyskać dostęp do gniazda dockera, możesz sprawdzić, które inne kontenery są uruchamiane, a nawet wejść do nich i ukraść przypisane im role IAM.

Uruchamianie kontenerów na bieżącym hoście

Ponadto, rola instancji EC2 zazwyczaj ma wystarczające uprawnienia, aby aktualizować stan instancji kontenera używanych jako węzły w klastrze EC2. 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 na innej instancji, potencjalnie wewnątrz instancji atakującego, dzięki czemu może ukraść ich role IAM i potencjalnie poufne 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 poprzez wyrejestrowanie instancji EC2 z klastra. Jest to potencjalnie mniej dyskretna metoda, ale spowoduje, że zadania zostaną uruchomione na innych instancjach:

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

Ostatnią techniką, aby wymusić ponowne wykonanie zadań, jest poinformowanie ECS, że zadanie lub kontener został zatrzymany. Istnieją 3 potencjalne interfejsy API, które umożliwiają to:

# 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 uprawnienie ecr:GetAuthorizationToken, co pozwoli jej na pobieranie obrazów (możesz w nich szukać wrażliwych informacji).

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated