AWS - STS Enum
Reading time: 4 minutes
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.
STS
AWS Security Token Service (STS) est principalement conçu pour émettre des identifiants temporaires à privilèges limités. Ces identifiants peuvent être demandés pour des utilisateurs AWS Identity and Access Management (IAM) ou pour des utilisateurs authentifiés (utilisateurs fédérés).
Étant donné que le but de STS est d'émettre des identifiants pour l'usurpation d'identité, le service est extrêmement précieux pour l'escalade de privilèges et le maintien de la persistance, même s'il peut ne pas avoir une large gamme d'options.
Usurpation de Rôle
L'action AssumeRole fournie par AWS STS est cruciale car elle permet à un principal d'acquérir des identifiants pour un autre principal, l'usurpant essentiellement. Lors de l'invocation, elle répond avec 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 de privilèges (comme expliqué ici). Cependant, il convient de noter que cette technique est assez évidente et peut ne pas surprendre un attaquant.
Logique d'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 (avec cette autorisation, c'est suffisant).
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 sts:AssumeRole
spécifique 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 (indiquant le ARN du rôle ou le compte externe), et le rôle essayant d'assumer l'autre DOIT avoir des permissions pour l'assumer (dans ce cas, ce n'est pas optionnel 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>
Privesc
Dans la page suivante, vous pouvez vérifier comment abuser des permissions STS pour escalader les privilèges :
Post Exploitation
Persistence
Références
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.