AWS - EC2 Privesc
EC2
Для отримання інформації про EC2 перегляньте:
pageAWS - EC2, EBS, ELB, SSM, VPC & VPN Enumiam:PassRole
, ec2:RunInstances
iam:PassRole
, ec2:RunInstances
Атакувальник може створити екземпляр, прикріпити до нього роль IAM, а потім отримати доступ до екземпляра, щоб вкрасти облікові дані ролі IAM з кінцевої точки метаданих.
Доступ через SSH
Запустіть новий екземпляр, використовуючи створений ключ ssh (--key-name
), а потім підключіться до нього через ssh (якщо ви хочете створити новий, можливо, вам знадобиться дозвіл ec2:CreateKeyPair
).
Доступ через обернену оболонку в даних користувача
Ви можете запустити новий екземпляр, використовуючи дані користувача (--user-data
), які надішлють вам обернену оболонку. Цим способом вам не потрібно вказувати групу безпеки.
Будьте обережні з GuradDuty, якщо ви використовуєте облікові дані ролі IAM поза екземпляром:
pageAWS - GuardDuty EnumПотенційний вплив: Пряме підвищення привілеїв до будь-якої ролі EC2, приєднаної до існуючих профілів екземплярів.
Підвищення привілеїв до ECS
З цим набором дозволів ви також можете створити екземпляр EC2 та зареєструвати його всередині кластера ECS. Таким чином, служби ECS будуть виконуватися всередині екземпляра EC2, до якого у вас є доступ, і потім ви зможете проникнути в ці служби (контейнери Docker) та вкрасти їх приєднані ролі ECS.
Щоб дізнатися, як змусити служби ECS працювати на цьому новому екземплярі EC2, перевірте:
pageAWS - ECS PrivescЯкщо ви не можете створити новий екземпляр, але маєте дозвіл ecs:RegisterContainerInstance
, ви, можливо, зможете зареєструвати екземпляр усередині кластера та виконати коментований атаку.
Потенційний вплив: Прямий підйом привілеїв до ролей ECS, прикріплених до завдань.
iam:PassRole
, iam:AddRoleToInstanceProfile
iam:PassRole
, iam:AddRoleToInstanceProfile
Аналогічно попередньому сценарію, зловмисник з цими дозволами може змінити роль IAM компрометованого екземпляра, щоб він міг вкрасти нові облікові дані.
Оскільки профіль екземпляра може мати лише 1 роль, якщо профіль екземпляра вже має роль (загальний випадок), вам також знадобиться iam:RemoveRoleFromInstanceProfile
.
Якщо профіль екземпляра має роль, атакуючий не може видалити його, є ще один обхідний шлях. Він може знайти профіль екземпляра без ролі або створити новий (iam:CreateInstanceProfile
), додати роль до цього профілю екземпляра (як вже обговорювалося раніше), і призначити профіль екземпляра компрометованому екземпляру:
Якщо у екземпляра немає жодного профілю екземпляра (
ec2:AssociateIamInstanceProfile
) *
Потенційний вплив: Прямий підвищення привілеїв до іншої ролі EC2 (потрібно скомпрометувати екземпляр AWS EC2 і мати додаткові дозволи або конкретний статус профілю екземпляра).
iam:PassRole
(( ec2:AssociateIamInstanceProfile
& ec2:DisassociateIamInstanceProfile
) || ec2:ReplaceIamInstanceProfileAssociation
)
iam:PassRole
(( ec2:AssociateIamInstanceProfile
& ec2:DisassociateIamInstanceProfile
) || ec2:ReplaceIamInstanceProfileAssociation
)З цими дозволами можливо змінити профіль екземпляра, пов'язаний з екземпляром, тому якщо атака вже мала доступ до екземпляра, він зможе вкрасти облікові дані для більшої кількості ролей профілю екземпляра, змінивши той, що пов'язаний з ним.
Якщо есть профіль екземпляра, ви можете видалити профіль екземпляра (
ec2:DisassociateIamInstanceProfile
) та призначити його *
або замініть профіль екземпляра компрометованого екземпляра (
ec2:ReplaceIamInstanceProfileAssociation
). *
Потенційний вплив: Пряме підвищення привілеїв до іншої ролі EC2 (потрібно скомпрометувати екземпляр AWS EC2 і мати додаткові дозволи або конкретний статус профілю екземпляра).
ec2:RequestSpotInstances
,iam:PassRole
ec2:RequestSpotInstances
,iam:PassRole
Зловмисник з дозволами ec2:RequestSpotInstances
та iam:PassRole
може запитати екземпляр Spot з прикріпленою роллю EC2 та rev shell в даних користувача.
Після запуску екземпляра він може викрасти роль IAM.
ec2:ModifyInstanceAttribute
ec2:ModifyInstanceAttribute
Зловмисник з можливістю ec2:ModifyInstanceAttribute
може змінювати атрибути екземплярів. Серед них він може змінювати дані користувача, що означає, що він може зробити екземпляр виконувати довільні дані. Це може бути використано для отримання оберненого шелу на екземплярі EC2.
Зверніть увагу, що атрибути можна змінювати лише під час зупинки екземпляра, тому потрібні дозволи ec2:StopInstances
та ec2:StartInstances
.
Потенційний вплив: Пряме підвищення привілеїв до будь-якої ролі IAM EC2, приєднаної до створеного екземпляру.
ec2:CreateLaunchTemplateVersion
,ec2:CreateLaunchTemplate
,ec2:ModifyLaunchTemplate
ec2:CreateLaunchTemplateVersion
,ec2:CreateLaunchTemplate
,ec2:ModifyLaunchTemplate
Зловмисник з дозволами ec2:CreateLaunchTemplateVersion
,ec2:CreateLaunchTemplate
та ec2:ModifyLaunchTemplate
може створити нову версію шаблону запуску з оборотним shell в даних користувача та будь-якою роллю IAM EC2 на ньому, змінити версію за замовчуванням, та будь-яку групу автомасштабування, яка використовує цей шаблон запуску, налаштований на використання останньої або версії за замовчуванням, буде перезапускати екземпляри за допомогою цього шаблону та виконувати оборотний shell.
Потенційний вплив: Прямий підвищення привілеїв до іншої ролі EC2.
autoscaling:CreateLaunchConfiguration
, autoscaling:CreateAutoScalingGroup
, iam:PassRole
autoscaling:CreateLaunchConfiguration
, autoscaling:CreateAutoScalingGroup
, iam:PassRole
Атакувальник з дозволами autoscaling:CreateLaunchConfiguration
,autoscaling:CreateAutoScalingGroup
,iam:PassRole
може створити конфігурацію запуску з IAM-роллю та rev shell всередині даних користувача, потім створити групу автомасштабування з цієї конфігурації та зачекати, поки rev shell вкраде IAM-роль.
Потенційний вплив: Прямий підйом привілеїв до іншої ролі EC2.
!autoscaling
!autoscaling
Набір дозволів ec2:CreateLaunchTemplate
та autoscaling:CreateAutoScalingGroup
недостатні для підвищення привілеїв до ролі IAM, оскільки для прикріплення ролі, вказаної в конфігурації запуску або в шаблоні запуску, потрібні дозволи iam:PassRole
та ec2:RunInstances
(це відомий підйом привілеїв).
ec2-instance-connect:SendSSHPublicKey
ec2-instance-connect:SendSSHPublicKey
Атакуючий з дозволом ec2-instance-connect:SendSSHPublicKey
може додати ключ ssh користувачу та використовувати його для доступу (якщо він має доступ ssh до екземпляра) або для підвищення привілеїв.
Потенційний вплив: Пряме підвищення привілеїв до ролей IAM EC2, приєднаних до запущених екземплярів.
ec2-instance-connect:SendSerialConsoleSSHPublicKey
ec2-instance-connect:SendSerialConsoleSSHPublicKey
Зловмисник з дозволом ec2-instance-connect:SendSerialConsoleSSHPublicKey
може додати ssh-ключ до послідовного з'єднання. Якщо послідовний порт не активований, зловмисник потребує дозволу ec2:EnableSerialConsoleAccess
для його активації.
Для підключення до послідовного порту вам також потрібно знати ім'я користувача та пароль користувача всередині машини.
Цей спосіб не є дуже корисним для підвищення привілеїв, оскільки вам потрібно знати ім'я користувача та пароль, щоб експлуатувати його.
Потенційний вплив: (Дуже недоведений) Пряме підвищення привілеїв до ролей IAM EC2, прикріплених до запущених екземплярів.
References
Last updated