AWS - STS Enum

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

Otras formas de apoyar a HackTricks:

STS

AWS Security Token Service (STS) está diseñado principalmente para emitir credenciales temporales y de privilegio limitado. Estas credenciales pueden ser solicitadas para usuarios de AWS Identity and Access Management (IAM) o para usuarios autenticados (usuarios federados).

Dado que el propósito de STS es emitir credenciales para la suplantación de identidad, el servicio es sumamente valioso para escalada de privilegios y mantenimiento de persistencia, aunque puede que no tenga una amplia gama de opciones.

Suplantación de Rol Asumido

La acción AssumeRole proporcionada por AWS STS es crucial ya que permite a un principal adquirir credenciales para otro principal, esencialmente suplantándolo. Al invocarla, responde con un ID de clave de acceso, una clave secreta y un token de sesión correspondiente al ARN especificado.

Para los Penetration Testers o miembros del Red Team, esta técnica es fundamental para la escalada de privilegios (como se detalla aquí). Sin embargo, es importante tener en cuenta que esta técnica es bastante llamativa y puede que no tome desprevenido a un atacante.

Lógica de Suplantación de Rol

Para asumir un rol en la misma cuenta si el rol a asumir permite específicamente un ARN de rol como en:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<acc_id>:role/priv-role"
},
"Action": "sts:AssumeRole",
"Condition": {}
}
]
}

El rol priv-role en este caso, no necesita ser específicamente permitido para asumir ese rol (con esa autorización es suficiente).

Sin embargo, si un rol está permitiendo a una cuenta asumirlo, como en:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<acc_id>:root"
},
"Action": "sts:AssumeRole",
"Condition": {}
}
]
}

El rol que intenta asumir necesitará un permiso específico sts:AssumeRole sobre ese rol para asumirlo.

Si intentas asumir un rol de una cuenta diferente, el rol asumido debe permitirlo (indicando el ARN del rol o la cuenta externa), y el rol que intenta asumir el otro DEBE tener permisos para asumirlo (en este caso, esto no es opcional incluso si el rol asumido está especificando un ARN).

Enumeración

# Get basic info of the creds
aws sts get-caller-identity
aws sts get-access-key-info --access-key-id <AccessKeyID>

# Get CLI a session token with current creds
## Using CLI creds
## You cannot get session creds using session creds
aws sts get-session-token
## MFA
aws sts get-session-token --serial-number <arn_device> --token-code <otp_code>

Elevación de privilegios

En la siguiente página puedes verificar cómo abusar de los permisos de STS para escalar privilegios:

pageAWS - STS Privesc

Post Explotación

pageAWS - STS Post Exploitation

Persistencia

pageAWS - IAM Persistence

Referencias

Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Última actualización