AWS - STS Privesc

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)!

Autres façons de soutenir HackTricks :

STS

sts:AssumeRole

Chaque rôle est créé avec une politique de confiance de rôle, cette politique indique qui peut assumer le rôle créé. Si un rôle du même compte indique qu'un compte peut l'assumer, cela signifie que le compte pourra accéder au rôle (et potentiellement élever ses privilèges).

Par exemple, la politique de confiance de rôle suivante indique que n'importe qui peut l'assumer, donc tout utilisateur pourra élever ses privilèges aux autorisations associées à ce rôle.

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

Vous pouvez vous faire passer pour un rôle en exécutant :

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

Impact potentiel : Élévation de privilèges vers le rôle.

Notez que dans ce cas, l'autorisation sts:AssumeRole doit être indiquée dans le rôle à abuser et non dans une stratégie appartenant à l'attaquant. À une exception près, pour assumer un rôle d'un compte différent, le compte de l'attaquant doit également avoir le sts:AssumeRole sur le rôle.

sts:AssumeRoleWithSAML

Une politique de confiance avec ce rôle accorde aux utilisateurs authentifiés via SAML l'accès pour se faire passer pour le rôle.

Un exemple de politique de confiance avec cette autorisation est :

{
"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"
}
}
}
]
}

Pour générer des informations d'identification pour usurper le rôle en général, vous pourriez utiliser quelque chose comme :

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

Mais les fournisseurs peuvent avoir leurs propres outils pour faciliter cette tâche, comme onelogin-aws-assume-role:

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

Impact potentiel : Élévation de privilèges vers le rôle.

sts:AssumeRoleWithWebIdentity

Cette autorisation accorde la permission d'obtenir un ensemble de justificatifs de sécurité temporaires pour les utilisateurs qui ont été authentifiés dans une application mobile, web, EKS... avec un fournisseur d'identité web. En savoir plus ici.

Par exemple, si un compte de service EKS devrait pouvoir usurper un rôle IAM, il aura un jeton dans /var/run/secrets/eks.amazonaws.com/serviceaccount/token et pourra assumer le rôle et obtenir des justificatifs en faisant quelque chose comme :

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

Abus de Fédération

pageAWS - Federation Abuse
Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)!

Autres façons de soutenir HackTricks:

Dernière mise à jour