AWS - ECS Post Exploitation

Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!

Autres moyens de soutenir HackTricks :

ECS

Pour plus d'informations, consultez :

pageAWS - ECS Enum

Rôles IAM des hôtes

Dans ECS, un rôle IAM peut être attribué à la tâche exécutée à 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 qui lui est 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 identifiants, 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 depuis un conteneur à l'intérieur de l'instance EC2.

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

De plus, EC2 utilise Docker pour exécuter les tâches ECS, donc si vous pouvez vous échapper vers le nœud ou accéder au socket Docker, vous pouvez vérifier quels autres conteneurs sont exécutés, et même entrer à l'intérieur d'eux et voler leurs rôles IAM attachés.

Faire exécuter des conteneurs sur l'hôte actuel

En outre, le rôle de l'instance EC2 aura généralement suffisamment de permissions pour mettre à jour l'état de l'instance 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 retirera toutes les tâches de celle-ci et celles exécutées en tant que REPLICA seront exécutées dans une autre instance, 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 dernière technique 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 API potentielles pour cela :

# 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 la permission ecr:GetAuthorizationToken lui permettant de télécharger des images (vous pourriez rechercher des informations sensibles à l'intérieur).

Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!

Autres moyens de soutenir HackTricks :

Dernière mise à jour