AWS - STS Privesc

Support HackTricks

STS

sts:AssumeRole

Jede Rolle wird mit einer Rollenvertrauensrichtlinie erstellt, diese Richtlinie gibt an, wer die erstellte Rolle übernehmen kann. Wenn eine Rolle aus dem gleichen Konto angibt, dass ein Konto sie übernehmen kann, bedeutet das, dass das Konto Zugriff auf die Rolle (und potenziell privesc) haben wird.

Zum Beispiel zeigt die folgende Rollenvertrauensrichtlinie an, dass jeder sie übernehmen kann, daher wird jeder Benutzer in der Lage sein, privesc zu den mit dieser Rolle verbundenen Berechtigungen zu erhalten.

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

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

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

Potenzielle Auswirkungen: Privilegieneskalation zur Rolle.

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

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>

Dies ist, wie diese Berechtigung sicher gewährt werden kann, ohne den Zugriff auf die Identität anderer Benutzer zu ermöglichen:

{
"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 auf die Rolle zu impersonieren.

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 zu impersonieren, könnten Sie etwas wie Folgendes verwenden:

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

Aber Anbieter könnten ihre eigenen Werkzeuge haben, um dies zu erleichtern, 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: Privesc auf die Rolle.

sts:AssumeRoleWithWebIdentity

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

Zum Beispiel, wenn ein EKS-Dienstkonto in der Lage sein sollte, eine IAM-Rolle zu impersonifizieren, hat es ein Token in /var/run/secrets/eks.amazonaws.com/serviceaccount/token und kann die Rolle annehmen und Anmeldeinformationen erhalten, indem es etwas wie folgt 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
Unterstütze HackTricks

Last updated