AWS - STS Enum

Unterstütze HackTricks

STS

AWS Security Token Service (STS) ist hauptsächlich dafür konzipiert, temporäre, eingeschränkte Berechtigungsnachweise auszustellen. Diese Berechtigungsnachweise können für AWS Identity and Access Management (IAM)-Benutzer oder für authentifizierte Benutzer (federierte Benutzer) angefordert werden.

Da der Zweck von STS darin besteht, Berechtigungsnachweise für Identitätsimitation auszustellen, ist der Dienst äußerst wertvoll für Privilegieneskalation und Aufrechterhaltung der Persistenz, auch wenn er möglicherweise nicht über eine breite Palette von Optionen verfügt.

Assume Role Impersonation

Die Aktion AssumeRole, die von AWS STS bereitgestellt wird, ist entscheidend, da sie einem Principal erlaubt, Berechtigungsnachweise für einen anderen Principal zu erwerben und ihn im Wesentlichen zu imitieren. Bei der Ausführung antwortet sie mit einer Zugangs-ID, einem geheimen Schlüssel und einem Sitzungstoken, die der angegebenen ARN entsprechen.

Für Penetration Tester oder Red Team Mitglieder ist diese Technik instrumental für die Privilegieneskalation (wie hier erläutert). Es ist jedoch zu beachten, dass diese Technik ziemlich auffällig ist und einen Angreifer möglicherweise nicht überraschen wird.

Assume Role Logic

Um eine Rolle im selben Konto zu übernehmen, wenn die Rolle, die übernommen werden soll, speziell eine Rollen-ARN zulässt, wie in:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<acc_id>:role/priv-role"
},
"Action": "sts:AssumeRole",
"Condition": {}
}
]
}

Die Rolle priv-role in diesem Fall muss nicht speziell erlaubt sein, um diese Rolle zu übernehmen (mit dieser Erlaubnis ist es genug).

Wenn jedoch eine Rolle einem Konto erlaubt, sie zu übernehmen, wie in:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<acc_id>:root"
},
"Action": "sts:AssumeRole",
"Condition": {}
}
]
}

Die Rolle, die versucht, sie zu übernehmen, benötigt eine spezifische sts:AssumeRole-Berechtigung für diese Rolle, um sie zu übernehmen.

Wenn Sie versuchen, eine Rolle von einem anderen Konto zu übernehmen, muss die übernommene Rolle dies zulassen (indem sie die Rollen-ARN oder das externe Konto angibt), und die Rolle, die versucht, die andere zu übernehmen, MUSS Berechtigungen haben, um sie zu übernehmen (in diesem Fall ist dies nicht optional, selbst wenn die übernommene Rolle eine ARN angibt).

Enumeration

# Get basic info of the creds
aws sts get-caller-identity
aws sts get-access-key-info --access-key-id <AccessKeyID>

# Get CLI a session token with current creds
## Using CLI creds
## You cannot get session creds using session creds
aws sts get-session-token
## MFA
aws sts get-session-token --serial-number <arn_device> --token-code <otp_code>

Privesc

Auf der folgenden Seite können Sie nachlesen, wie man STS-Berechtigungen missbraucht, um Privilegien zu eskalieren:

AWS - STS Privesc

Post Exploitation

AWS - STS Post Exploitation

Persistence

AWS - STS Persistence

References

Unterstützen Sie HackTricks

Last updated