AWS - ECS Privesc
ECS
Weitere Informationen zu ECS unter:
pageAWS - ECS Enumiam:PassRole
, ecs:RegisterTaskDefinition
, ecs:RunTask
iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:RunTask
Ein Angreifer, der die Berechtigungen iam:PassRole
, ecs:RegisterTaskDefinition
und ecs:RunTask
in ECS missbraucht, kann eine neue Task-Definition mit einem bösartigen Container erstellen, der die Metadaten-Anmeldeinformationen stiehlt und ausführt.
Potenzielle Auswirkungen: Direkter Privilege Escalation zu einer anderen ECS-Rolle.
iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:StartTask
iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:StartTask
Genau wie im vorherigen Beispiel kann ein Angreifer, der die Berechtigungen iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:StartTask
in ECS missbraucht, eine neue Task-Definition mit einem bösartigen Container erstellen, der die Metadaten-Anmeldeinformationen stiehlt und ausführt.
In diesem Fall muss jedoch eine Containerinstanz vorhanden sein, um die bösartige Task-Definition auszuführen.
Potenzielle Auswirkungen: Direktes Privilegien-Eskalation zu einer beliebigen ECS-Rolle.
iam:PassRole
, ecs:RegisterTaskDefinition
, (ecs:UpdateService|ecs:CreateService)
iam:PassRole
, ecs:RegisterTaskDefinition
, (ecs:UpdateService|ecs:CreateService)
Genau wie im vorherigen Beispiel kann ein Angreifer, der die Berechtigungen iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:UpdateService
oder ecs:CreateService
in ECS missbraucht, eine neue Task-Definition erstellen, die einen bösartigen Container enthält, der die Metadaten-Anmeldeinformationen stiehlt und ihn ausführt, indem er einen neuen Dienst mit mindestens 1 laufenden Task erstellt.
Potenzielle Auswirkungen: Direktes Privilegien-Eskalation zu jeder ECS-Rolle.
ecs:RegisterTaskDefinition
, (ecs:RunTask|ecs:StartTask|ecs:UpdateService|ecs:CreateService)
ecs:RegisterTaskDefinition
, (ecs:RunTask|ecs:StartTask|ecs:UpdateService|ecs:CreateService)
Dieses Szenario ist ähnlich wie die vorherigen, aber ohne die Berechtigung iam:PassRole
.
Dies ist immer noch interessant, denn wenn Sie einen beliebigen Container ausführen können, auch wenn es ohne eine Rolle ist, könnten Sie einen privilegierten Container ausführen, um auf den Knoten zu entkommen und die EC2 IAM-Rolle und die anderen ECS-Containerrollen zu stehlen, die auf dem Knoten laufen.
Sie könnten sogar andere Aufgaben zwingen, innerhalb der EC2-Instanz auszuführen, die Sie kompromittiert haben, um ihre Anmeldeinformationen zu stehlen (wie im Abschnitt Privilegien-Eskalation zum Knoten diskutiert).
Dieser Angriff ist nur möglich, wenn der ECS-Cluster EC2-Instanzen verwendet und nicht 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)
Ein Angreifer mit den Berechtigungen ecs:ExecuteCommand
, ecs:DescribeTasks
kann Befehle innerhalb eines laufenden Containers ausführen und die daran angehängte IAM-Rolle exfiltrieren (Sie benötigen die Beschreibungsrechte, da es notwendig ist, aws ecs execute-command
auszuführen).
Um dies zu erreichen, muss die Containerinstanz jedoch den ExecuteCommand-Agent ausführen (was standardmäßig nicht der Fall ist).
Daher könnte der Angreifer versuchen:
Versuchen, einen Befehl in jedem laufenden Container auszuführen
Wenn er
ecs:RunTask
hat, führen Sie eine Aufgabe mitaws ecs run-task --enable-execute-command [...]
aus.Wenn er
ecs:StartTask
hat, führen Sie eine Aufgabe mitaws ecs start-task --enable-execute-command [...]
aus.Wenn er
ecs:CreateService
hat, erstellen Sie einen Dienst mitaws ecs create-service --enable-execute-command [...]
.Wenn er
ecs:UpdateService
hat, aktualisieren Sie einen Dienst mitaws ecs update-service --enable-execute-command [...]
.
Sie können Beispiele für diese Optionen in den vorherigen ECS-Privesc-Abschnitten finden.
Potenzielle Auswirkungen: Privesc zu einer anderen Rolle, die an Container angehängt ist.
ssm:StartSession
ssm:StartSession
Überprüfen Sie auf der ssm-Privesc-Seite, wie Sie diese Berechtigung missbrauchen können, um zu ECS zu privesc:
pageAWS - SSM Privesciam:PassRole
, ec2:RunInstances
iam:PassRole
, ec2:RunInstances
Überprüfen Sie auf der ec2-Privesc-Seite, wie Sie diese Berechtigungen missbrauchen können, um zu ECS zu privesc:
pageAWS - EC2 Privesc?ecs:RegisterContainerInstance
?ecs:RegisterContainerInstance
TODO: Ist es möglich, eine Instanz aus einem anderen AWS-Konto zu registrieren, damit Aufgaben unter von Angreifern kontrollierten Maschinen ausgeführt werden??
ecs:CreateTaskSet
, ecs:UpdateServicePrimaryTaskSet
, ecs:DescribeTaskSets
ecs:CreateTaskSet
, ecs:UpdateServicePrimaryTaskSet
, ecs:DescribeTaskSets
TODO: Testen Sie dies
Ein Angreifer mit den Berechtigungen ecs:CreateTaskSet
, ecs:UpdateServicePrimaryTaskSet
und ecs:DescribeTaskSets
kann einen bösartigen Task-Satz für einen vorhandenen ECS-Dienst erstellen und den primären Task-Satz aktualisieren. Dies ermöglicht es dem Angreifer, beliebigen Code innerhalb des Dienstes auszuführen.
Potenzielle Auswirkungen: Ausführen beliebigen Codes im betroffenen Dienst, potenziell Beeinträchtigung seiner Funktionalität oder Exfiltration sensibler Daten.
Referenzen
Last updated