AWS - ECS Privesc
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Más info sobre ECS en:
AWS - ECS Enumiam:PassRole
, ecs:RegisterTaskDefinition
, ecs:RunTask
Un atacante que abuse de los permisos iam:PassRole
, ecs:RegisterTaskDefinition
y ecs:RunTask
en ECS puede generar una nueva definición de tarea con un contenedor malicioso que roba las credenciales de metadatos y ejecutarlo.
Impacto Potencial: Privesc directo a un rol de ECS diferente.
iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:StartTask
Al igual que en el ejemplo anterior, un atacante que abuse de los permisos iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:StartTask
en ECS puede generar una nueva definición de tarea con un contenedor malicioso que roba las credenciales de metadatos y ejecutarlo.
Sin embargo, en este caso, se necesita una instancia de contenedor para ejecutar la definición de tarea maliciosa.
Impacto Potencial: Privesc directo a cualquier rol de ECS.
iam:PassRole
, ecs:RegisterTaskDefinition
, (ecs:UpdateService|ecs:CreateService)
Al igual que en el ejemplo anterior, un atacante que abuse de los permisos iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:UpdateService
o ecs:CreateService
en ECS puede generar una nueva definición de tarea con un contenedor malicioso que roba las credenciales de metadatos y ejecutarlo creando un nuevo servicio con al menos 1 tarea en ejecución.
Impacto Potencial: Privesc directo a cualquier rol de ECS.
iam:PassRole
, (ecs:UpdateService|ecs:CreateService)
De hecho, solo con esos permisos es posible usar sobrescrituras para ejecutar comandos arbitrarios en un contenedor con un rol arbitrario con algo como:
Impacto Potencial: Privesc directo a cualquier rol de ECS.
ecs:RegisterTaskDefinition
, (ecs:RunTask|ecs:StartTask|ecs:UpdateService|ecs:CreateService)
Este escenario es como los anteriores pero sin el permiso iam:PassRole
.
Esto sigue siendo interesante porque si puedes ejecutar un contenedor arbitrario, incluso si no tiene un rol, podrías ejecutar un contenedor privilegiado para escapar al nodo y robar el rol IAM de EC2 y los otros roles de contenedores ECS que se ejecutan en el nodo.
Incluso podrías forzar a otras tareas a ejecutarse dentro de la instancia EC2 que comprometes para robar sus credenciales (como se discutió en la sección Privesc a nodo).
Este ataque solo es posible si el clúster de ECS está utilizando instancias EC2 y no Fargate.
ecs:ExecuteCommand
, ecs:DescribeTasks,
(ecs:RunTask|ecs:StartTask|ecs:UpdateService|ecs:CreateService)
Un atacante con el ecs:ExecuteCommand
, ecs:DescribeTasks
puede ejecutar comandos dentro de un contenedor en ejecución y exfiltrar el rol de IAM adjunto a él (necesitas los permisos de descripción porque es necesario ejecutar aws ecs execute-command
).
Sin embargo, para hacer eso, la instancia del contenedor necesita estar ejecutando el agente ExecuteCommand (que por defecto no lo está).
Por lo tanto, el atacante podría intentar:
Intentar ejecutar un comando en cada contenedor en ejecución
Si tiene ecs:RunTask
, ejecute una tarea con aws ecs run-task --enable-execute-command [...]
Si tiene ecs:StartTask
, ejecute una tarea con aws ecs start-task --enable-execute-command [...]
Si tiene ecs:CreateService
, cree un servicio con aws ecs create-service --enable-execute-command [...]
Si tiene ecs:UpdateService
, actualice un servicio con aws ecs update-service --enable-execute-command [...]
Puede encontrar ejemplos de esas opciones en secciones anteriores de privesc de ECS.
Impacto Potencial: Privesc a un rol diferente adjunto a contenedores.
ssm:StartSession
Verifique en la página de privesc de ssm cómo puede abusar de este permiso para privesc a ECS:
AWS - SSM Privesciam:PassRole
, ec2:RunInstances
Verifique en la página de privesc de ec2 cómo puede abusar de estos permisos para privesc a ECS:
AWS - EC2 Privesc?ecs:RegisterContainerInstance
TODO: ¿Es posible registrar una instancia de otra cuenta de AWS para que las tareas se ejecuten en máquinas controladas por el atacante?
ecs:CreateTaskSet
, ecs:UpdateServicePrimaryTaskSet
, ecs:DescribeTaskSets
TODO: Probar esto
Un atacante con los permisos ecs:CreateTaskSet
, ecs:UpdateServicePrimaryTaskSet
y ecs:DescribeTaskSets
puede crear un conjunto de tareas malicioso para un servicio ECS existente y actualizar el conjunto de tareas principal. Esto permite al atacante ejecutar código arbitrario dentro del servicio.
Impacto Potencial: Ejecutar código arbitrario en el servicio afectado, lo que podría afectar su funcionalidad o exfiltrar datos sensibles.
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)