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)
Mais informações sobre ECS em:
AWS - ECS Enumiam:PassRole
, ecs:RegisterTaskDefinition
, ecs:RunTask
Um atacante que abusar da permissão iam:PassRole
, ecs:RegisterTaskDefinition
e ecs:RunTask
no ECS pode gerar uma nova definição de tarefa com um container malicioso que rouba as credenciais de metadados e executá-lo.
Impacto Potencial: Privesc direto para um papel ECS diferente.
iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:StartTask
Assim como no exemplo anterior, um atacante que abuse das permissões iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:StartTask
no ECS pode gerar uma nova definição de tarefa com um container malicioso que rouba as credenciais de metadados e executá-lo.
No entanto, neste caso, uma instância de container para executar a definição de tarefa maliciosa precisa estar disponível.
Impacto Potencial: Privesc direto para qualquer função ECS.
iam:PassRole
, ecs:RegisterTaskDefinition
, (ecs:UpdateService|ecs:CreateService)
Assim como no exemplo anterior, um atacante que abuse das permissões iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:UpdateService
ou ecs:CreateService
no ECS pode gerar uma nova definição de tarefa com um container malicioso que rouba as credenciais de metadados e executá-lo criando um novo serviço com pelo menos 1 tarefa em execução.
Impacto Potencial: Privesc direto para qualquer função ECS.
iam:PassRole
, (ecs:UpdateService|ecs:CreateService)
Na verdade, apenas com essas permissões é possível usar substituições para executar comandos arbitrários em um contêiner com uma função arbitrária com algo como:
Impacto Potencial: Privesc direto para qualquer função ECS.
ecs:RegisterTaskDefinition
, (ecs:RunTask|ecs:StartTask|ecs:UpdateService|ecs:CreateService)
Este cenário é como os anteriores, mas sem a permissão iam:PassRole
.
Isso ainda é interessante porque se você puder executar um contêiner arbitrário, mesmo que seja sem uma função, você poderia executar um contêiner privilegiado para escapar para o nó e roubar a função IAM do EC2 e as outras funções dos contêineres ECS em execução no nó.
Você poderia até forçar outras tarefas a serem executadas dentro da instância EC2 que você comprometeu para roubar suas credenciais (como discutido na seção Privesc para nó).
Este ataque só é possível se o cluster ECS estiver usando instâncias EC2 e não Fargate.
ecs:ExecuteCommand
, ecs:DescribeTasks,
(ecs:RunTask|ecs:StartTask|ecs:UpdateService|ecs:CreateService)
Um atacante com o ecs:ExecuteCommand
, ecs:DescribeTasks
pode executar comandos dentro de um contêiner em execução e exfiltrar a função IAM anexada a ele (você precisa das permissões de descrição porque é necessário executar aws ecs execute-command
).
No entanto, para fazer isso, a instância do contêiner precisa estar executando o ExecuteCommand agent (que por padrão não está).
Portanto, o atacante pode tentar:
Tentar executar um comando em todos os contêineres em execução
Se ele tiver ecs:RunTask
, execute uma tarefa com aws ecs run-task --enable-execute-command [...]
Se ele tiver ecs:StartTask
, execute uma tarefa com aws ecs start-task --enable-execute-command [...]
Se ele tiver ecs:CreateService
, crie um serviço com aws ecs create-service --enable-execute-command [...]
Se ele tiver ecs:UpdateService
, atualize um serviço com aws ecs update-service --enable-execute-command [...]
Você pode encontrar exemplos dessas opções nas seções anteriores de privesc do ECS.
Impacto Potencial: Privesc para um papel diferente anexado a contêineres.
ssm:StartSession
Verifique na página de privesc do ssm como você pode abusar dessa permissão para privesc para ECS:
AWS - SSM Privesciam:PassRole
, ec2:RunInstances
Verifique na página de privesc do ec2 como você pode abusar dessas permissões para privesc para ECS:
AWS - EC2 Privesc?ecs:RegisterContainerInstance
TODO: É possível registrar uma instância de uma conta AWS diferente para que as tarefas sejam executadas em máquinas controladas pelo atacante??
ecs:CreateTaskSet
, ecs:UpdateServicePrimaryTaskSet
, ecs:DescribeTaskSets
TODO: Testar isso
Um atacante com as permissões ecs:CreateTaskSet
, ecs:UpdateServicePrimaryTaskSet
e ecs:DescribeTaskSets
pode criar um conjunto de tarefas malicioso para um serviço ECS existente e atualizar o conjunto de tarefas primário. Isso permite que o atacante execute código arbitrário dentro do serviço.
Impacto Potencial: Executar código arbitrário no serviço afetado, potencialmente impactando sua funcionalidade ou exfiltrando dados sensíveis.
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)