AWS - ECS Post Exploitation

Aprenda hacking no AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks:

ECS

Para mais informações, confira:

pageAWS - ECS Enum

Papéis IAM do Host

No ECS, um papel IAM pode ser atribuído à tarefa executada dentro do contêiner. Se a tarefa for executada dentro de uma instância EC2, a instância EC2 terá outro papel IAM associado a ela. Isso significa que, se você conseguir comprometer uma instância ECS, você pode potencialmente obter o papel IAM associado ao ECR e à instância EC2. Para mais informações sobre como obter essas credenciais, confira:

Observe que se a instância EC2 estiver aplicando IMDSv2, de acordo com a documentação, a resposta do pedido PUT terá um limite de salto de 1, tornando impossível acessar os metadados da EC2 de um contêiner dentro da instância EC2.

Privesc para o nó para roubar credenciais e segredos de outros contêineres

Além disso, a EC2 usa docker para executar tarefas do ECS, então se você conseguir escapar para o nó ou acessar o socket do docker, você pode verificar quais outros contêineres estão sendo executados, e até mesmo entrar dentro deles e roubar seus papéis IAM associados.

Fazendo contêineres rodarem no host atual

Ademais, o papel da instância EC2 geralmente terá permissões suficientes para atualizar o estado da instância do contêiner das instâncias EC2 usadas como nós dentro do cluster. Um atacante poderia modificar o estado de uma instância para DRAINING, então o ECS removerá todas as tarefas dela e as que estiverem sendo executadas como REPLICA serão executadas em uma instância diferente, potencialmente dentro da instância do atacante para que ele possa roubar seus papéis IAM e informações sensíveis de dentro do contêiner.

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

A mesma técnica pode ser realizada desregistrando a instância EC2 do cluster. Isso é potencialmente menos discreto, mas forçará as tarefas a serem executadas em outras instâncias:

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

Uma técnica final para forçar a re-execução de tarefas é indicando ao ECS que a tarefa ou container foi interrompido. Existem 3 APIs potenciais para fazer isso:

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

Roubar informações sensíveis de contêineres ECR

A instância EC2 provavelmente também terá a permissão ecr:GetAuthorizationToken permitindo que ela baixe imagens (você poderia procurar por informações sensíveis nelas).

Aprenda hacking na AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks:

Última actualización