AWS - STS Privesc

Impara l'hacking di AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

STS

sts:AssumeRole

Ogni ruolo viene creato con una policy di trust del ruolo, questa policy indica chi può assumere il ruolo creato. Se un ruolo dello stesso account indica che un account può assumerlo, significa che l'account sarà in grado di accedere al ruolo (e potenzialmente fare privesc).

Ad esempio, la seguente policy di trust del ruolo indica che chiunque può assumerlo, quindi qualsiasi utente sarà in grado di fare privesc alle autorizzazioni associate a quel ruolo.

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

Puoi impersonare un ruolo eseguendo:

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

Impatto potenziale: Privesc al ruolo.

Si noti che in questo caso l'autorizzazione sts:AssumeRole deve essere indicata nel ruolo da abusare e non in una policy appartenente all'attaccante. Con un'eccezione, per assumere un ruolo da un account diverso, l'account dell'attaccante deve anche avere l'autorizzazione sts:AssumeRole sul ruolo.

sts:AssumeRoleWithSAML

Una policy di trust con questo ruolo concede agli utenti autenticati tramite SAML l'accesso per impersonare il ruolo.

Un esempio di una policy di trust con questa autorizzazione è:

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

Per generare le credenziali per impersonare il ruolo in generale, è possibile utilizzare qualcosa del genere:

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

Ma i provider potrebbero avere i loro propri strumenti per rendere questo più facile, come onelogin-aws-assume-role:

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

Impatto potenziale: Privesc al ruolo.

sts:AssumeRoleWithWebIdentity

Questa autorizzazione consente di ottenere un set di credenziali di sicurezza temporanee per utenti autenticati in un'applicazione mobile, web, EKS... con un provider di identità web. Ulteriori informazioni qui.

Ad esempio, se un account di servizio EKS deve essere in grado di impersonare un ruolo IAM, avrà un token in /var/run/secrets/eks.amazonaws.com/serviceaccount/token e può assumere il ruolo e ottenere le credenziali facendo qualcosa del genere:

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 della federazione

pageAWS - Federation Abuse
Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Last updated