AWS - STS Enum

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

AWS Security Token Service (STS) est principalement conçu pour émettre des informations d'identification temporaires et à privilèges limités. Ces informations d'identification peuvent être demandées pour des utilisateurs de Gestion des accès et des identités (IAM) AWS ou pour des utilisateurs authentifiés (utilisateurs fédérés).

Étant donné que le but de STS est d'émettre des informations d'identification pour l'usurpation d'identité, le service est extrêmement précieux pour escalader les privilèges et maintenir la persistance, même s'il peut ne pas offrir une large gamme d'options.

Usurpation de rôle supposé

L'action AssumeRole fournie par AWS STS est cruciale car elle permet à un principal d'acquérir des informations d'identification pour un autre principal, en les usurpant essentiellement. Lors de son invocation, il renvoie un ID de clé d'accès, une clé secrète et un jeton de session correspondant à l'ARN spécifié.

Pour les testeurs de pénétration ou les membres de l'équipe rouge, cette technique est essentielle pour l'escalade des privilèges (comme expliqué ici). Cependant, il convient de noter que cette technique est assez visible et peut ne pas surprendre un attaquant.

Logique de l'usurpation de rôle

Pour assumer un rôle dans le même compte si le rôle à assumer permet spécifiquement un ARN de rôle comme dans:

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

Le rôle priv-role dans ce cas, n'a pas besoin d'être spécifiquement autorisé à assumer ce rôle (cette autorisation est suffisante).

Cependant, si un rôle permet à un compte de l'assumer, comme dans :

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

Le rôle essayant de l'assumer aura besoin d'une permission spécifique sts:AssumeRole sur ce rôle pour l'assumer.

Si vous essayez d'assumer un rôle d'un compte différent, le rôle assumé doit le permettre (en indiquant l'ARN du rôle ou du compte externe), et le rôle essayant de l'assumer DOIT avoir les autorisations pour le faire (dans ce cas, ce n'est pas facultatif même si le rôle assumé spécifie un ARN).

Énumération

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

Élévation de privilèges

Sur la page suivante, vous pouvez vérifier comment abuser des autorisations STS pour escalader les privilèges:

pageAWS - STS Privesc

Post-exploitation

pageAWS - STS Post Exploitation

Persistance

pageAWS - IAM Persistence

Références

Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!

Autres façons de soutenir HackTricks:

Dernière mise à jour