AWS - ECS Privesc
Last updated
Last updated
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Mehr Info über ECS in:
AWS - ECS Enumiam:PassRole
, ecs:RegisterTaskDefinition
, ecs:RunTask
Ein Angreifer, der die Berechtigung iam:PassRole
, ecs:RegisterTaskDefinition
und ecs:RunTask
in ECS missbraucht, kann eine neue Aufgabenbeschreibung mit einem bösartigen Container erstellen, der die Metadaten-Anmeldeinformationen stiehlt und ausführt.
Potenzielle Auswirkungen: Direkte Privilegieneskalation zu einer anderen ECS-Rolle.
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 Aufgabenbeschreibung mit einem bösartigen Container erstellen, der die Metadaten-Anmeldeinformationen stiehlt und ausführt.
Allerdings muss in diesem Fall eine Containerinstanz vorhanden sein, um die bösartige Aufgabenbeschreibung auszuführen.
Potenzielle Auswirkungen: Direkte Privilegieneskalation zu jeder ECS-Rolle.
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 mit einem bösartigen Container erstellen, der die Metadaten-Anmeldeinformationen stiehlt und diese ausführen, indem er einen neuen Dienst mit mindestens 1 laufender Aufgabe erstellt.
Potenzielle Auswirkungen: Direkte Privilegieneskalation zu jeder ECS-Rolle.
iam:PassRole
, (ecs:UpdateService|ecs:CreateService)
Tatsächlich ist es nur mit diesen Berechtigungen möglich, Überschreibungen zu verwenden, um beliebige Befehle in einem Container mit einer beliebigen Rolle auszuführen, mit etwas wie:
Potenzielle Auswirkungen: Direkte Privilegieneskalation zu jeder ECS-Rolle.
ecs:RegisterTaskDefinition
, (ecs:RunTask|ecs:StartTask|ecs:UpdateService|ecs:CreateService)
Dieses Szenario ist wie die vorherigen, aber ohne die iam:PassRole
Berechtigung.
Das 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 zum Knoten zu entkommen und die EC2 IAM-Rolle sowie die anderen ECS-Containerrollen zu stehlen, die im Knoten laufen.
Sie könnten sogar andere Aufgaben zwingen, innerhalb der EC2-Instanz zu laufen, die Sie kompromittieren, um deren Anmeldeinformationen zu stehlen (wie im Privesc zu Knoten Abschnitt besprochen).
Dieser Angriff ist nur möglich, wenn der ECS-Cluster EC2-Instanzen und nicht Fargate verwendet.
ecs:ExecuteCommand
, ecs:DescribeTasks,
(ecs:RunTask|ecs:StartTask|ecs:UpdateService|ecs:CreateService)
Ein Angreifer mit den ecs:ExecuteCommand
, ecs:DescribeTasks
kann Befehle ausführen innerhalb eines laufenden Containers und die angehängte IAM-Rolle exfiltrieren (Sie benötigen die Beschreibungsberechtigungen, da es notwendig ist, aws ecs execute-command
auszuführen).
Um dies zu tun, muss die Container-Instanz 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ühre eine Aufgabe mit aws ecs run-task --enable-execute-command [...]
aus.
Wenn er ecs:StartTask
hat, führe eine Aufgabe mit aws ecs start-task --enable-execute-command [...]
aus.
Wenn er ecs:CreateService
hat, erstelle einen Dienst mit aws ecs create-service --enable-execute-command [...]
.
Wenn er ecs:UpdateService
hat, aktualisiere einen Dienst mit aws ecs update-service --enable-execute-command [...]
.
Du kannst Beispiele für diese Optionen in früheren ECS privesc Abschnitten finden.
Potenzielle Auswirkungen: Privesc zu einer anderen Rolle, die an Containern angehängt ist.
ssm:StartSession
Überprüfe auf der ssm privesc Seite, wie du diese Berechtigung ausnutzen kannst, um privesc zu ECS zu erreichen:
AWS - SSM Privesciam:PassRole
, ec2:RunInstances
Überprüfe auf der ec2 privesc Seite, wie du diese Berechtigungen ausnutzen kannst, um privesc zu ECS zu erreichen:
AWS - EC2 Privesc?ecs:RegisterContainerInstance
TODO: Ist es möglich, eine Instanz aus einem anderen AWS-Konto zu registrieren, sodass Aufgaben unter Maschinen ausgeführt werden, die vom Angreifer kontrolliert werden??
ecs:CreateTaskSet
, ecs:UpdateServicePrimaryTaskSet
, ecs:DescribeTaskSets
TODO: Teste dies
Ein Angreifer mit den Berechtigungen ecs:CreateTaskSet
, ecs:UpdateServicePrimaryTaskSet
und ecs:DescribeTaskSets
kann ein bösartiges Task-Set für einen bestehenden ECS-Dienst erstellen und das primäre Task-Set aktualisieren. Dies ermöglicht es dem Angreifer, willkürlichen Code innerhalb des Dienstes auszuführen.
Potenzielle Auswirkungen: Ausführen von beliebigem Code im betroffenen Dienst, was möglicherweise dessen Funktionalität beeinträchtigt oder sensible Daten exfiltriert.
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)