AWS - ECS Post Exploitation

Impara l'hacking di AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

ECS

Per ulteriori informazioni, controlla:

pageAWS - ECS Enum

Ruoli IAM dell'host

In ECS un ruolo IAM può essere assegnato al task in esecuzione all'interno del container. Se il task viene eseguito all'interno di un'istanza EC2, l'istanza EC2 avrà un altro ruolo IAM associato ad essa. Ciò significa che se riesci a compromettere un'istanza ECS, potenzialmente puoi ottenere il ruolo IAM associato all'ECR e all'istanza EC2. Per ulteriori informazioni su come ottenere queste credenziali, controlla:

Nota che se l'istanza EC2 sta applicando IMDSv2, secondo la documentazione, la risposta della richiesta PUT avrà un limite di hop di 1, rendendo impossibile accedere ai metadati EC2 da un container all'interno dell'istanza EC2.

Privesc al nodo per rubare le credenziali e i segreti di altri container

Ma inoltre, EC2 utilizza Docker per eseguire i task di ECS, quindi se riesci a sfuggire al nodo o ad accedere al socket di Docker, puoi verificare quali altri container vengono eseguiti e persino entrare al loro interno e rubare i loro ruoli IAM associati.

Fare eseguire i container nell'host corrente

Inoltre, il ruolo dell'istanza EC2 avrà di solito le autorizzazioni sufficienti per aggiornare lo stato dell'istanza del container delle istanze EC2 utilizzate come nodi all'interno del cluster. Un attaccante potrebbe modificare lo stato di un'istanza in DRAINING, quindi ECS rimuoverà tutti i task da essa e quelli in esecuzione come REPLICA verranno eseguiti in un'istanza diversa, potenzialmente all'interno dell'istanza dell'attaccante, in modo da poter rubare i loro ruoli IAM e informazioni sensibili potenziali dall'interno del container.

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

La stessa tecnica può essere eseguita deregistrando l'istanza EC2 dal cluster. Questo è potenzialmente meno stealthy ma forzerà le attività ad essere eseguite in altre istanze:

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

Una tecnica finale per forzare la ri-esecuzione dei task è indicare a ECS che il task o il container è stato fermato. Ci sono 3 potenziali API per fare ciò:

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

Rubare informazioni sensibili dai container ECR

L'istanza EC2 probabilmente avrà anche il permesso ecr:GetAuthorizationToken che le permette di scaricare immagini (puoi cercare informazioni sensibili al loro interno).

Impara l'hacking su AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Last updated