AWS - ECS Post Exploitation

Apprenez et pratiquez le piratage AWS : Formation HackTricks AWS Red Team Expert (ARTE) Apprenez et pratiquez le piratage GCP : Formation HackTricks GCP Red Team Expert (GRTE)

Soutenez HackTricks

ECS

Pour plus d'informations, consultez :

AWS - ECS Enum

Rôles IAM de l'hôte

Dans ECS, un rôle IAM peut être attribué à la tâche s'exécutant à l'intérieur du conteneur. Si la tâche est exécutée à l'intérieur d'une instance EC2, l'instance EC2 aura un autre rôle IAM attaché. Cela signifie que si vous parvenez à compromettre une instance ECS, vous pouvez potentiellement obtenir le rôle IAM associé à l'ECR et à l'instance EC2. Pour plus d'informations sur la façon d'obtenir ces informations d'identification, consultez :

Notez que si l'instance EC2 applique IMDSv2, selon la documentation, la réponse de la requête PUT aura une limite de saut de 1, rendant impossible l'accès aux métadonnées EC2 à partir d'un conteneur à l'intérieur de l'instance EC2.

Élévation de privilèges vers le nœud pour voler les informations d'identification et les secrets d'autres conteneurs

De plus, EC2 utilise Docker pour exécuter les tâches ECS, donc si vous parvenez à vous échapper vers le nœud ou à accéder au socket Docker, vous pouvez vérifier quels autres conteneurs sont en cours d'exécution, voire y accéder et voler leurs rôles IAM attachés.

Faire fonctionner les conteneurs sur l'hôte actuel

De plus, le rôle de l'instance EC2 aura généralement suffisamment de permissions pour mettre à jour l'état de l'instance de conteneur des instances EC2 utilisées comme nœuds à l'intérieur du cluster. Un attaquant pourrait modifier l'état d'une instance en DRAINING, puis ECS supprimera toutes les tâches de celle-ci et celles exécutées en tant que REPLICA seront exécutées dans une instance différente, potentiellement à l'intérieur de l'instance de l'attaquant afin qu'il puisse voler leurs rôles IAM et des informations sensibles potentielles à l'intérieur du conteneur.

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

La même technique peut être réalisée en désenregistrant l'instance EC2 du cluster. Cela est potentiellement moins discret mais cela forcera les tâches à s'exécuter sur d'autres instances :

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

Une technique finale pour forcer la ré-exécution des tâches consiste à indiquer à ECS que la tâche ou le conteneur a été arrêté. Il existe 3 APIs potentielles pour ce faire :

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

Voler des informations sensibles des conteneurs ECR

L'instance EC2 aura probablement également l'autorisation ecr:GetAuthorizationToken lui permettant de télécharger des images (vous pourriez rechercher des informations sensibles à l'intérieur).

Apprenez et pratiquez le Hacking AWS :Formation HackTricks AWS Red Team Expert (ARTE) Apprenez et pratiquez le Hacking GCP : Formation HackTricks GCP Red Team Expert (GRTE)

Soutenez HackTricks

Last updated