AWS - ECS Privesc
ECS
Maggiori informazioni su ECS in:
pageAWS - ECS Enumiam:PassRole
, ecs:RegisterTaskDefinition
, ecs:RunTask
iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:RunTask
Un attaccante che sfrutta i 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
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 container malevolo che ruba le credenziali dei metadati e eseguirlo.
Tuttavia, in questo caso, è necessaria un'istanza del container per eseguire la definizione di task malevola.
Impatto potenziale: Privesc diretto a qualsiasi ruolo ECS.
iam:PassRole
, ecs:RegisterTaskDefinition
, (ecs:UpdateService|ecs:CreateService)
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 attività con un contenitore maligno che ruba le credenziali dei metadati e eseguirlo creando un nuovo servizio con almeno 1 attività in esecuzione.
Potenziale Impatto: Privesc diretto a qualsiasi ruolo ECS.
ecs:RegisterTaskDefinition
, (ecs:RunTask|ecs:StartTask|ecs:UpdateService|ecs:CreateService)
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 senza un ruolo, potresti eseguire un contenitore privilegiato per sfuggire al nodo e rubare il ruolo EC2 IAM e gli altri ruoli dei contenitori ECS in esecuzione nel nodo.
Potresti persino forzare altre attività ad eseguirsi all'interno dell'istanza EC2 che hai compromesso per rubare le loro credenziali (come discusso nella sezione Privesc al nodo).
Questo attacco è possibile solo se il cluster ECS sta utilizzando istanze EC2 e non Fargate.
ecs:ExecuteCommand
, ecs:DescribeTasks,
(ecs:RunTask|ecs:StartTask|ecs:UpdateService|ecs:CreateService)
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 estrarre 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 essere in esecuzione con l'agente ExecuteCommand (che di default non lo è).
Pertanto, l'attaccante può provare a:
Provare ad eseguire un comando in ogni container in esecuzione
Se ha
ecs:RunTask
, esegui un task conaws ecs run-task --enable-execute-command [...]
Se ha
ecs:StartTask
, esegui un task conaws ecs start-task --enable-execute-command [...]
Se ha
ecs:CreateService
, crea un servizio conaws ecs create-service --enable-execute-command [...]
Se ha
ecs:UpdateService
, aggiorna un servizio conaws ecs update-service --enable-execute-command [...]
Puoi trovare esempi di queste opzioni nelle sezioni precedenti di privesc di ECS.
Impatto potenziale: Privesc a un ruolo diverso collegato ai contenitori.
ssm:StartSession
ssm:StartSession
Controlla nella pagina di privesc di ssm come puoi sfruttare questa autorizzazione per privesc a ECS:
pageAWS - SSM Privesciam:PassRole
, ec2:RunInstances
iam:PassRole
, ec2:RunInstances
Controlla nella pagina di privesc di ec2 come puoi sfruttare queste autorizzazioni per privesc a ECS:
pageAWS - EC2 Privesc?ecs:RegisterContainerInstance
?ecs:RegisterContainerInstance
TODO: È possibile registrare un'istanza da un diverso account AWS in modo che i task vengano eseguiti su macchine controllate dall'attaccante??
ecs:CreateTaskSet
, ecs:UpdateServicePrimaryTaskSet
, ecs:DescribeTaskSets
ecs:CreateTaskSet
, ecs:UpdateServicePrimaryTaskSet
, ecs:DescribeTaskSets
TODO: Testa questo
Un attaccante con le autorizzazioni ecs:CreateTaskSet
, ecs:UpdateServicePrimaryTaskSet
e ecs:DescribeTaskSets
può creare un set di task maligno per un servizio ECS esistente e aggiornare il set di task primario. Ciò consente all'attaccante di eseguire codice arbitrario all'interno del servizio.
Potenziale Impatto: Eseguire codice arbitrario nel servizio interessato, potenzialmente compromettendo la sua funzionalità o esfiltrando dati sensibili.
Riferimenti
Last updated