AWS - STS Enum

Tip

Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya 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 inmensamente valioso para escalar privilegios y mantener persistencia, aunque puede que no tenga una amplia gama de opciones.

Suplantaci贸n de Rol

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 invocarse, responde con un ID de clave de acceso, una clave secreta y un token de sesi贸n correspondiente al ARN especificado.

Para los testers de penetraci贸n o miembros del Red Team, esta t茅cnica es instrumental para la escalada de privilegios (como se detalla aqu铆). Sin embargo, vale la pena se帽alar que esta t茅cnica es bastante conspicua y puede no sorprender 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 ese permiso es suficiente).

Sin embargo, si un rol permite que una cuenta lo asuma, 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>

Privesc

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

AWS - STS Privesc

Post Explotaci贸n

AWS - STS Post Exploitation

Persistencia

AWS - STS Persistence

Referencias

Tip

Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks