AWS - ECS Privesc
ECS
Більше інформації про ECS в:
AWS - ECS Enumiam:PassRole
, ecs:RegisterTaskDefinition
, ecs:RunTask
iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:RunTask
Зловмисник, який зловживає дозволами iam:PassRole
, ecs:RegisterTaskDefinition
та ecs:RunTask
в ECS, може створити нове визначення завдання з шкідливим контейнером, який краде облікові дані метаданих і запустити його.
Потенційний вплив: Пряме підвищення привілеїв до іншої ролі ECS.
iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:StartTask
iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:StartTask
Так само, як у попередньому прикладі, зловмисник, який зловживає дозволами iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:StartTask
в ECS, може створити нове визначення завдання з шкідливим контейнером, який краде облікові дані метаданих і запустити його.
Однак у цьому випадку потрібно мати екземпляр контейнера для запуску шкідливого визначення завдання.
Потенційний вплив: Пряме підвищення привілеїв до будь-якої ролі ECS.
iam:PassRole
, ecs:RegisterTaskDefinition
, (ecs:UpdateService|ecs:CreateService)
iam:PassRole
, ecs:RegisterTaskDefinition
, (ecs:UpdateService|ecs:CreateService)
Так само, як у попередньому прикладі, зловмисник, який зловживає дозволами iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:UpdateService
або ecs:CreateService
в ECS, може створити нове визначення завдання з шкідливим контейнером, який краде облікові дані метаданих, і запустити його, створивши нову службу з принаймні 1 запущеним завданням.
Потенційний вплив: Пряме підвищення привілеїв до будь-якої ролі ECS.
iam:PassRole
, (ecs:UpdateService|ecs:CreateService)
iam:PassRole
, (ecs:UpdateService|ecs:CreateService)
Насправді, лише з цими дозволами можливо використовувати переопределення для виконання довільних команд у контейнері з довільною роллю за допомогою чогось на зразок:
Потенційний вплив: Пряме підвищення привілеїв до будь-якої ролі ECS.
ecs:RegisterTaskDefinition
, (ecs:RunTask|ecs:StartTask|ecs:UpdateService|ecs:CreateService)
ecs:RegisterTaskDefinition
, (ecs:RunTask|ecs:StartTask|ecs:UpdateService|ecs:CreateService)
Цей сценарій схожий на попередні, але без дозволу iam:PassRole
.
Це все ще цікаво, оскільки, якщо ви можете запустити довільний контейнер, навіть якщо це без ролі, ви могли б запустити привілейований контейнер, щоб втекти на вузол і вкрасти роль EC2 IAM та інші ролі контейнерів ECS, що працюють на вузлі.
Ви навіть могли б примусити інші завдання працювати всередині EC2 екземпляра, який ви скомпрометували, щоб вкрасти їхні облікові дані (як обговорювалося в Розділі підвищення привілеїв до вузла).
Цей напад можливий лише якщо кластер ECS використовує EC2 екземпляри, а не 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)
Зловмисник з ecs:ExecuteCommand
, ecs:DescribeTasks
може виконувати команди всередині запущеного контейнера та ексфільтрувати IAM роль, що до нього прикріплена (вам потрібні права опису, оскільки це необхідно для виконання aws ecs execute-command
).
Однак, для цього екземпляр контейнера повинен працювати з агентом ExecuteCommand (який за замовчуванням не працює).
Отже, зловмисник може спробувати:
Спробувати виконати команду в кожному запущеному контейнері
Якщо він має
ecs:RunTask
, запустіть задачу за допомогоюaws ecs run-task --enable-execute-command [...]
Якщо він має
ecs:StartTask
, запустіть задачу за допомогоюaws ecs start-task --enable-execute-command [...]
Якщо він має
ecs:CreateService
, створіть сервіс за допомогоюaws ecs create-service --enable-execute-command [...]
Якщо він має
ecs:UpdateService
, оновіть сервіс за допомогоюaws ecs update-service --enable-execute-command [...]
Ви можете знайти приклади цих опцій у попередніх розділах ECS privesc.
Потенційний вплив: Privesc до іншої ролі, прикріпленої до контейнерів.
ssm:StartSession
ssm:StartSession
Перевірте на сторінці ssm privesc, як ви можете зловживати цим дозволом для privesc до ECS:
AWS - SSM Privesciam:PassRole
, ec2:RunInstances
iam:PassRole
, ec2:RunInstances
Перевірте на сторінці ec2 privesc, як ви можете зловживати цими дозволами для privesc до ECS:
AWS - EC2 Privesc?ecs:RegisterContainerInstance
?ecs:RegisterContainerInstance
TODO: Чи можливо зареєструвати екземпляр з іншого облікового запису AWS, щоб задачі виконувалися на машинах, контрольованих зловмисником??
ecs:CreateTaskSet
, ecs:UpdateServicePrimaryTaskSet
, ecs:DescribeTaskSets
ecs:CreateTaskSet
, ecs:UpdateServicePrimaryTaskSet
, ecs:DescribeTaskSets
TODO: Тестуйте це
Зловмисник з дозволами ecs:CreateTaskSet
, ecs:UpdateServicePrimaryTaskSet
та ecs:DescribeTaskSets
може створити шкідливий набір задач для існуючого сервісу ECS та оновити основний набір задач. Це дозволяє зловмиснику виконувати довільний код у межах сервісу.
Потенційний вплив: Виконання довільного коду в ураженій службі, що потенційно вплине на її функціональність або ексфільтрацію чутливих даних.
Посилання
Last updated