AWS - STS Privesc

Erlernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

STS

sts:AssumeRole

Jede Rolle wird mit einer Rollenvertrauensrichtlinie erstellt, die angibt, wer die erstellte Rolle annehmen kann. Wenn eine Rolle aus dem selben Konto sagt, dass ein Konto sie annehmen kann, bedeutet dies, dass das Konto auf die Rolle zugreifen kann (und potenziell Privilegien eskalieren kann).

Zum Beispiel zeigt die folgende Rollenvertrauensrichtlinie an, dass jeder sie annehmen kann, daher kann jeder Benutzer zu den Berechtigungen dieser Rolle eskalieren.

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

Du kannst eine Rolle impersonieren, indem du Folgendes ausführst:

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

Potenzielle Auswirkung: Privilege Eskalation zur Rolle.

Beachten Sie, dass in diesem Fall die Berechtigung sts:AssumeRole in der Rolle angegeben sein muss, um missbraucht zu werden, und nicht in einer Richtlinie, die dem Angreifer gehört. Mit einer Ausnahme muss das Angreiferkonto auch die Berechtigung sts:AssumeRole über die Rolle verfügen, um eine Rolle aus einem anderen Konto anzunehmen.

sts:AssumeRoleWithSAML

Eine Vertrauensrichtlinie mit dieser Rolle gewährt Benutzern, die über SAML authentifiziert sind, Zugriff, die Rolle zu imitieren.

Ein Beispiel für eine Vertrauensrichtlinie mit dieser Berechtigung ist:

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

Um Anmeldeinformationen zu generieren, um die Rolle im Allgemeinen zu übernehmen, könnten Sie etwas Ähnliches verwenden:

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

Aber Anbieter könnten ihre eigenen Tools haben, um dies einfacher zu machen, wie onelogin-aws-assume-role:

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

Potenzielle Auswirkungen: Privilege Escalation auf die Rolle.

sts:AssumeRoleWithWebIdentity

Diese Berechtigung gewährt die Erlaubnis, einen Satz temporärer Sicherheitsanmeldeinformationen für Benutzer zu erhalten, die in einer mobilen, Webanwendung, EKS... mit einem Web-Identitätsanbieter authentifiziert wurden. Hier erfahren Sie mehr.

Wenn beispielsweise ein EKS-Dienstkontos die Möglichkeit haben sollte, eine IAM-Rolle zu übernehmen, wird es ein Token in /var/run/secrets/eks.amazonaws.com/serviceaccount/token haben und kann die Rolle annehmen und Anmeldeinformationen erhalten, indem es etwas Ähnliches tut:

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

Föderationsmissbrauch

pageAWS - Federation Abuse
Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Last updated