AWS - ECS Post Exploitation

Підтримайте HackTricks

ECS

Для отримання додаткової інформації перегляньте:

AWS - ECS Enum

Ролі IAM хоста

У ECS роль IAM може бути призначена для завдання, що виконується всередині контейнера. Якщо завдання виконується всередині екземпляра EC2, то у цього екземпляра EC2 буде прикріплена інша роль IAM. Це означає, що якщо вам вдасться скомпрометувати екземпляр ECS, ви потенційно можете отримати роль IAM, пов'язану з ECR та з екземпляром EC2. Для отримання додаткової інформації про те, як отримати ці облікові дані, перегляньте:

Зверніть увагу, що якщо екземпляр EC2 застосовує IMDSv2, згідно з документацією, відповідь на запит PUT матиме обмеження на кількість кроків 1, що ускладнює доступ до метаданих EC2 з контейнера всередині екземпляра EC2.

Підвищення привілеїв до вузла для крадіжки облікових даних та секретів інших контейнерів

Більше того, EC2 використовує Docker для запуску завдань ECS, тому якщо ви зможете вийти на вузол або отримати доступ до сокету Docker, ви зможете перевірити, які інші контейнери виконуються, і навіть увійти в них та вкрасти їх ролі IAM, які прикріплені.

Запуск контейнерів на поточному хості

Крім того, роль екземпляра EC2 зазвичай матиме достатньо дозволів для оновлення стану контейнера екземпляра екземплярів EC2, які використовуються як вузли всередині кластера. Атакувальник може змінити стан екземпляра на DRAINING, тоді ECS видалить всі завдання з нього, а ті, що виконуються як REPLICA, будуть виконані на іншому екземплярі, потенційно всередині екземпляра атакувальника, щоб він міг вкрасти їх ролі IAM та можливо чутливу інформацію з контейнера.

aws ecs update-container-instances-state \
--cluster <cluster> --status DRAINING --container-instances <container-instance-id>

Ту саму техніку можна виконати, відключивши екземпляр EC2 від кластера. Це може бути менш приховано, але це змусить завдання виконуватися на інших екземплярах:

aws ecs deregister-container-instance \
--cluster <cluster> --container-instance <container-instance-id> --force

Останній метод, щоб змусити перевиконання завдань - це вказати ECS, що завдання або контейнер був зупинений. Є 3 потенційні API для цього:

# Needs: ecs:SubmitTaskStateChange
aws ecs submit-task-state-change --cluster <value> \
--status STOPPED --reason "anything" --containers [...]

# Needs: ecs:SubmitContainerStateChange
aws ecs submit-container-state-change ...

# Needs: ecs:SubmitAttachmentStateChanges
aws ecs submit-attachment-state-changes ...

Викрадення чутливої інформації з контейнерів ECR

Інстанс EC2, ймовірно, також матиме дозвіл ecr:GetAuthorizationToken, що дозволить йому завантажувати зображення (ви можете шукати чутливу інформацію в них).

Last updated