AWS - STS Privesc

Erlernen Sie AWS-Hacking von Null auf Held 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 eskalieren, die mit dieser Rolle verbunden sind.

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

Du kannst eine Rolle nachahmen, die läuft:

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

Potenzielle Auswirkung: Privilege Escalation auf die 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:GetFederationToken

Mit dieser Berechtigung ist es möglich, Anmeldeinformationen zu generieren, um sich als beliebiger Benutzer auszugeben:

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

Das ist, wie diese Berechtigung sicher erteilt werden kann, ohne Zugriff auf das Nachahmen anderer Benutzer zu gewähren:

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

sts:AssumeRoleWithSAML

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

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 in der Lage sein 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

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