AWS - STS Enum

Wspieraj HackTricks

STS

AWS Security Token Service (STS) jest głównie zaprojektowany do wydawania tymczasowych, ograniczonych uprawnień poświadczeń. Te poświadczenia mogą być żądane dla AWS Identity and Access Management (IAM) użytkowników lub dla uwierzytelnionych użytkowników (użytkowników federacyjnych).

Biorąc pod uwagę, że celem STS jest wydawanie poświadczeń do podszywania się pod tożsamość, usługa ta jest niezwykle wartościowa dla eskalacji uprawnień i utrzymania trwałości, mimo że może nie mieć szerokiego wachlarza opcji.

Assume Role Impersonation

Akcja AssumeRole dostarczana przez AWS STS jest kluczowa, ponieważ pozwala podmiotowi uzyskać poświadczenia dla innego podmiotu, zasadniczo podszywając się pod niego. Po wywołaniu, odpowiada identyfikatorem klucza dostępu, tajnym kluczem i tokenem sesji odpowiadającym określonemu ARN.

Dla Penetration Testerów lub członków Red Team, ta technika jest instrumentalna dla eskalacji uprawnień (jak wyjaśniono tutaj). Warto jednak zauważyć, że ta technika jest dość widoczna i może nie zaskoczyć atakującego.

Assume Role Logic

Aby przyjąć rolę w tym samym koncie, jeśli rola do przyjęcia pozwala konkretnie na ARN roli jak w:

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

Rola priv-role w tym przypadku, nie musi być specjalnie dozwolona do przyjęcia tej roli (z tym zezwoleniem jest wystarczająca).

Jednakże, jeśli rola pozwala na przyjęcie jej przez konto, jak w:

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

Rola próbująca ją przejąć będzie potrzebować specyficznego uprawnienia sts:AssumeRole dla tej roli, aby ją przejąć.

Jeśli próbujesz przejąć rolę z innego konta, przejęta rola musi to umożliwiać (wskazując rolę ARN lub zewnętrzne konto), a rola próbująca przejąć inną MUSI mieć uprawnienia do jej przejęcia (w tym przypadku nie jest to opcjonalne, nawet jeśli przejęta rola wskazuje ARN).

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

Na następnej stronie możesz sprawdzić, jak wykorzystać uprawnienia STS do eskalacji uprawnień:

AWS - STS Privesc

Post Exploitation

AWS - STS Post Exploitation

Persistence

AWS - STS Persistence

References

Wspieraj HackTricks

Last updated