AWS - ECS Privesc
ECS
Więcej informacji o ECS w:
AWS - ECS Enumiam:PassRole
, ecs:RegisterTaskDefinition
, ecs:RunTask
iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:RunTask
Atakujący, wykorzystując uprawnienia iam:PassRole
, ecs:RegisterTaskDefinition
i ecs:RunTask
w ECS, może wygenerować nową definicję zadania z złośliwym kontenerem, który kradnie poświadczenia metadanych i uruchomić ją.
Potencjalny Wpływ: Bezpośredni privesc do innej roli ECS.
iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:StartTask
iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:StartTask
Podobnie jak w poprzednim przykładzie, atakujący nadużywający uprawnień iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:StartTask
w ECS może wygenerować nową definicję zadania z złośliwym kontenerem, który kradnie poświadczenia metadanych i uruchomić ją.
Jednak w tym przypadku, instancja kontenera do uruchomienia złośliwej definicji zadania musi być.
Potencjalny wpływ: Bezpośredni privesc do dowolnej roli ECS.
iam:PassRole
, ecs:RegisterTaskDefinition
, (ecs:UpdateService|ecs:CreateService)
iam:PassRole
, ecs:RegisterTaskDefinition
, (ecs:UpdateService|ecs:CreateService)
Podobnie jak w poprzednim przykładzie, atakujący nadużywający uprawnień iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:UpdateService
lub ecs:CreateService
w ECS może wygenerować nową definicję zadania z złośliwym kontenerem, który kradnie poświadczenia metadanych i uruchomić ją, tworząc nową usługę z co najmniej jednym działającym zadaniem.
Potencjalny Wpływ: Bezpośredni privesc do dowolnej roli ECS.
iam:PassRole
, (ecs:UpdateService|ecs:CreateService)
iam:PassRole
, (ecs:UpdateService|ecs:CreateService)
W rzeczywistości, mając tylko te uprawnienia, możliwe jest użycie overrides do wykonania dowolnych poleceń w kontenerze z dowolną rolą za pomocą czegoś takiego:
Potential Impact: Bezpośredni privesc do dowolnej roli ECS.
ecs:RegisterTaskDefinition
, (ecs:RunTask|ecs:StartTask|ecs:UpdateService|ecs:CreateService)
ecs:RegisterTaskDefinition
, (ecs:RunTask|ecs:StartTask|ecs:UpdateService|ecs:CreateService)
Ten scenariusz jest podobny do poprzednich, ale bez uprawnienia iam:PassRole
.
Jest to nadal interesujące, ponieważ jeśli możesz uruchomić dowolny kontener, nawet bez roli, możesz uruchomić uprzywilejowany kontener, aby uciec do węzła i ukraść rolę EC2 IAM oraz inne role kontenerów ECS uruchomionych w węźle.
Możesz nawet wymusić uruchomienie innych zadań wewnątrz instancji EC2, którą przejmiesz, aby ukraść ich poświadczenia (jak omówiono w sekcji Privesc to node).
Ten atak jest możliwy tylko wtedy, gdy klaster ECS używa instancji EC2, a nie 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)
Atakujący z uprawnieniami ecs:ExecuteCommand
, ecs:DescribeTasks
może wykonywać polecenia wewnątrz działającego kontenera i wykradać rolę IAM przypisaną do niego (potrzebne są uprawnienia describe, ponieważ konieczne jest uruchomienie aws ecs execute-command
).
Jednakże, aby to zrobić, instancja kontenera musi uruchamiać agent ExecuteCommand (który domyślnie nie jest uruchomiony).
Dlatego atakujący może spróbować:
Spróbować uruchomić polecenie w każdym działającym kontenerze
Jeśli posiada
ecs:RunTask
, uruchom zadanie za pomocąaws ecs run-task --enable-execute-command [...]
Jeśli posiada
ecs:StartTask
, uruchom zadanie za pomocąaws ecs start-task --enable-execute-command [...]
Jeśli posiada
ecs:CreateService
, utwórz usługę za pomocąaws ecs create-service --enable-execute-command [...]
Jeśli posiada
ecs:UpdateService
, zaktualizuj usługę za pomocąaws ecs update-service --enable-execute-command [...]
Możesz znaleźć przykłady tych opcji w poprzednich sekcjach ECS privesc.
Potencjalny wpływ: Privesc do innej roli przypisanej do kontenerów.
ssm:StartSession
ssm:StartSession
Sprawdź na stronie ssm privesc, jak możesz wykorzystać to uprawnienie do privesc do ECS:
AWS - SSM Privesciam:PassRole
, ec2:RunInstances
iam:PassRole
, ec2:RunInstances
Sprawdź na stronie ec2 privesc, jak możesz wykorzystać te uprawnienia do privesc do ECS:
AWS - EC2 Privesc?ecs:RegisterContainerInstance
?ecs:RegisterContainerInstance
TODO: Czy możliwe jest zarejestrowanie instancji z innego konta AWS, aby zadania były uruchamiane na maszynach kontrolowanych przez atakującego??
ecs:CreateTaskSet
, ecs:UpdateServicePrimaryTaskSet
, ecs:DescribeTaskSets
ecs:CreateTaskSet
, ecs:UpdateServicePrimaryTaskSet
, ecs:DescribeTaskSets
TODO: Przetestuj to
Atakujący z uprawnieniami ecs:CreateTaskSet
, ecs:UpdateServicePrimaryTaskSet
i ecs:DescribeTaskSets
może utworzyć złośliwy zestaw zadań dla istniejącej usługi ECS i zaktualizować główny zestaw zadań. Pozwala to atakującemu na wykonywanie dowolnego kodu w ramach usługi.
Potencjalny wpływ: Wykonanie dowolnego kodu w zaatakowanej usłudze, co może wpłynąć na jej funkcjonalność lub wyciek wrażliwych danych.
Odnośniki
Last updated