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)
More info about ECS in:
AWS - ECS Enumiam:PassRole
, ecs:RegisterTaskDefinition
, ecs:RunTask
Un attaccante che abusa dei permessi iam:PassRole
, ecs:RegisterTaskDefinition
e ecs:RunTask
in ECS può generare una nuova definizione di task con un container malevolo che ruba le credenziali dei metadati e eseguirlo.
Impatto Potenziale: Privesc diretto a un diverso ruolo ECS.
iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:StartTask
Proprio come nell'esempio precedente, un attaccante che abusa dei permessi iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:StartTask
in ECS può generare una nuova definizione di task con un contenitore malevolo che ruba le credenziali dei metadati e eseguirlo.
Tuttavia, in questo caso, è necessario un'istanza di contenitore per eseguire la definizione di task malevola.
Impatto Potenziale: Privesc diretto a qualsiasi ruolo ECS.
iam:PassRole
, ecs:RegisterTaskDefinition
, (ecs:UpdateService|ecs:CreateService)
Proprio come nell'esempio precedente, un attaccante che abusa dei permessi iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:UpdateService
o ecs:CreateService
in ECS può generare una nuova definizione di task con un container malevolo che ruba le credenziali dei metadati e eseguirlo creando un nuovo servizio con almeno 1 task in esecuzione.
Impatto Potenziale: Privesc diretto a qualsiasi ruolo ECS.
iam:PassRole
, (ecs:UpdateService|ecs:CreateService)
In realtà, solo con quei permessi è possibile utilizzare le sovrascritture per eseguire comandi arbitrari in un contenitore con un ruolo arbitrario con qualcosa come:
Impatto Potenziale: Privesc diretto a qualsiasi ruolo ECS.
ecs:RegisterTaskDefinition
, (ecs:RunTask|ecs:StartTask|ecs:UpdateService|ecs:CreateService)
Questo scenario è simile ai precedenti ma senza il permesso iam:PassRole
.
Questo è comunque interessante perché se puoi eseguire un contenitore arbitrario, anche se senza un ruolo, potresti eseguire un contenitore privilegiato per scappare al nodo e rubare il ruolo IAM EC2 e i ruoli degli altri contenitori ECS in esecuzione nel nodo.
Potresti persino forzare altre attività a essere eseguite all'interno dell'istanza EC2 che comprometti per rubare le loro credenziali (come discusso nella sezione Privesc to node).
Questo attacco è possibile solo se il cluster ECS utilizza istanze EC2 e non Fargate.
ecs:ExecuteCommand
, ecs:DescribeTasks,
(ecs:RunTask|ecs:StartTask|ecs:UpdateService|ecs:CreateService)
Un attaccante con i permessi ecs:ExecuteCommand
, ecs:DescribeTasks
può eseguire comandi all'interno di un container in esecuzione ed esfiltrare il ruolo IAM ad esso associato (è necessario avere i permessi di descrizione perché è necessario eseguire aws ecs execute-command
).
Tuttavia, per fare ciò, l'istanza del container deve eseguire l'agent ExecuteCommand (che per impostazione predefinita non è attivo).
Pertanto, l'attaccante potrebbe provare a:
Provare a eseguire un comando in ogni container in esecuzione
Se ha ecs:RunTask
, esegui un'attività con aws ecs run-task --enable-execute-command [...]
Se ha ecs:StartTask
, esegui un'attività con aws ecs start-task --enable-execute-command [...]
Se ha ecs:CreateService
, crea un servizio con aws ecs create-service --enable-execute-command [...]
Se ha ecs:UpdateService
, aggiorna un servizio con aws ecs update-service --enable-execute-command [...]
Puoi trovare esempi di queste opzioni nelle sezioni precedenti di privesc ECS.
Impatto Potenziale: Privesc a un ruolo diverso associato ai contenitori.
ssm:StartSession
Controlla nella pagina di privesc ssm come puoi abusare di questo permesso per privesc a ECS:
AWS - SSM Privesciam:PassRole
, ec2:RunInstances
Controlla nella pagina di privesc ec2 come puoi abusare di questi permessi per privesc a ECS:
AWS - EC2 Privesc?ecs:RegisterContainerInstance
TODO: È possibile registrare un'istanza da un diverso account AWS in modo che le attività vengano eseguite su macchine controllate dall'attaccante??
ecs:CreateTaskSet
, ecs:UpdateServicePrimaryTaskSet
, ecs:DescribeTaskSets
TODO: Testa questo
Un attaccante con i permessi ecs:CreateTaskSet
, ecs:UpdateServicePrimaryTaskSet
e ecs:DescribeTaskSets
può creare un set di attività malevole per un servizio ECS esistente e aggiornare il set di attività primario. Questo consente all'attaccante di eseguire codice arbitrario all'interno del servizio.
Impatto Potenziale: Eseguire codice arbitrario nel servizio interessato, potenzialmente influenzando la sua funzionalità o esfiltrando dati sensibili.
Impara e pratica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)