# AWS - ECS Post Exploitation {{#include ../../../banners/hacktricks-training.md}} ## ECS Per ulteriori informazioni controlla: {{#ref}} ../aws-services/aws-ecs-enum.md {{#endref}} ### Ruoli IAM dell'Host In ECS un **ruolo IAM può essere assegnato al task** in esecuzione all'interno del container. **Se** il task è 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: {{#ref}} https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf {{#endref}} > [!CAUTION] > Nota che se l'istanza EC2 sta applicando IMDSv2, [**secondo la documentazione**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html), 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 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à solitamente 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'istanza diversa,** 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 --status DRAINING --container-instances ``` 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 --container-instance --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 \ --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). {{#include ../../../banners/hacktricks-training.md}}