AWS - ECS Post Exploitation

Reading time: 4 minutes

tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks

ECS

Per ulteriori informazioni controlla:

AWS - 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 EC2 instance, l'EC2 instance avrà un altro ruolo IAM ad esso associato.
Ciò significa che se riesci a compromettere un'istanza ECS puoi potenzialmente ottenere il ruolo IAM associato all'ECR e all'istanza EC2. Per ulteriori informazioni su come ottenere queste credenziali controlla:

Cloud SSRF - HackTricks

caution

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.

Privilegi di escalation al nodo per rubare credenziali e segreti di altri container

Inoltre, EC2 utilizza Docker per eseguire i task EC, quindi se riesci a scappare al nodo o accedere al socket Docker, puoi controllare quali altri container sono in esecuzione, e persino entrare in essi e rubare i loro ruoli IAM associati.

Far eseguire i container nell'host attuale

Inoltre, il ruolo dell'istanza EC2 avrà di solito abbastanza permessi 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 saranno eseguiti in un'altra istanza, potenzialmente all'interno dell'istanza dell'attaccante in modo che possa rubare i loro ruoli IAM e potenziali informazioni sensibili dall'interno del container.

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

La stessa tecnica può essere eseguita dissociando l'istanza EC2 dal cluster. Questo è potenzialmente meno furtivo ma costringerà i task a essere eseguiti in altre istanze:

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

Una tecnica finale per forzare la riesecuzione dei compiti è indicare a ECS che il compito o il contenitore è stato fermato. Ci sono 3 API potenziali per farlo:

bash
# 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 contenitori ECR

L'istanza EC2 avrà probabilmente anche il permesso ecr:GetAuthorizationToken che le consente di scaricare immagini (potresti cercare informazioni sensibili in esse).

tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks