AWS - STS Privesc

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

Altri modi per supportare HackTricks:

STS

sts:AssumeRole

Ogni ruolo è creato con una policy di trust del ruolo, questa policy indica chi può assumere il ruolo creato. Se un ruolo dello stesso account dice che un account può assumerlo, significa che l'account sarà in grado di accedere al ruolo (e potenzialmente 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: Escalation dei privilegi al ruolo.

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

sts:GetFederationToken

Con questo permesso è possibile generare credenziali per impersonare qualsiasi utente:

aws sts get-federation-token --name <username>

Questo è come questa autorizzazione può essere concessa in modo sicuro senza concedere l'accesso all'impersonificazione di altri utenti:

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "sts:GetFederationToken",
"Resource": "arn:aws:sts::947247140022:federated-user/${aws:username}"
}
]
}

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 questo permesso è:

{
"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, potresti utilizzare qualcosa del genere:

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

Ma i fornitori potrebbero avere i loro strumenti per rendere questo processo più semplice, 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 concede il permesso di ottenere un set di credenziali di sicurezza temporanee per utenti che sono stati autenticati in un'applicazione mobile, web, EKS... con un fornitore di identità web. Ulteriori informazioni qui.

Ad esempio, se un account di servizio EKS dovrebbe 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

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

Altri modi per supportare HackTricks:

Last updated