AWS - STS Privesc

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

Otras formas de apoyar a HackTricks:

STS

sts:AssumeRole

Cada rol se crea con una política de confianza de rol, esta política indica quién puede asumir el rol creado. Si un rol del mismo cuenta indica que una cuenta puede asumirlo, significa que la cuenta podrá acceder al rol (y potencialmente escalada de privilegios).

Por ejemplo, la siguiente política de confianza de rol indica que cualquiera puede asumirlo, por lo tanto cualquier usuario podrá realizar una escalada de privilegios a los permisos asociados con ese rol.

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "sts:AssumeRole"
}
]
}

Puedes suplantar un rol ejecutando:

aws sts assume-role --role-arn $ROLE_ARN --role-session-name sessionname

Impacto Potencial: Escalada de privilegios al rol.

Tenga en cuenta que en este caso, el permiso sts:AssumeRole debe estar indicado en el rol a abusar y no en una política perteneciente al atacante. Con una excepción, para asumir un rol de una cuenta diferente la cuenta del atacante también necesita tener el permiso sts:AssumeRole sobre el rol.

sts:AssumeRoleWithSAML

Una política de confianza con este rol otorga a los usuarios autenticados a través de SAML acceso para suplantar al rol.

Un ejemplo de una política de confianza con este permiso es:

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "OneLogin",
"Effect": "Allow",
"Principal": {
"Federated": "arn:aws:iam::290594632123:saml-provider/OneLogin"
},
"Action": "sts:AssumeRoleWithSAML",
"Condition": {
"StringEquals": {
"SAML:aud": "https://signin.aws.amazon.com/saml"
}
}
}
]
}

Para generar credenciales para suplantar el rol en general, podrías usar algo como:

aws sts  assume-role-with-saml --role-arn <value> --principal-arn <value>

Pero los proveedores pueden tener sus propias herramientas para facilitar esto, como onelogin-aws-assume-role:

onelogin-aws-assume-role --onelogin-subdomain mettle --onelogin-app-id 283740 --aws-region eu-west-1 -z 3600

Impacto potencial: Escalada de privilegios al rol.

sts:AssumeRoleWithWebIdentity

Esta permisión otorga el permiso para obtener un conjunto de credenciales de seguridad temporales para usuarios que han sido autenticados en una aplicación móvil, web, EKS... con un proveedor de identidad web. Más información aquí.

Por ejemplo, si una cuenta de servicio EKS debería poder suplantar a un rol IAM, tendrá un token en /var/run/secrets/eks.amazonaws.com/serviceaccount/token y puede asumir el rol y obtener credenciales haciendo algo como:

aws sts assume-role-with-web-identity --role-arn arn:aws:iam::123456789098:role/<role_name> --role-session-name something --web-identity-token file:///var/run/secrets/eks.amazonaws.com/serviceaccount/token
# The role name can be found in the metadata of the configuration of the pod

Abuso de Federación

pageAWS - Federation Abuse
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