AWS - STS Enum

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

STS

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

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

Podszywanie się pod rolę (Assume Role Impersonation)

Działanie AssumeRole dostarczane przez AWS STS jest kluczowe, 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 testerów penetracyjnych lub członków Czerwonego Zespołu, ta technika jest niezbędna do eskalacji uprawnień (jak szczegółowo opisano tutaj). Warto jednak zauważyć, że ta technika jest dość oczywista i może nie zaskoczyć atakującego.

Logika Assume Role

Aby przejąć rolę w tym samym koncie, jeśli roli do przejęcia jest specyficznie zezwolone 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 upoważniona do przejęcia tej roli (z takim upoważnieniem wystarczy).

Jednakże, jeśli rola zezwala na przejęcie jej przez konto, jak w przypadku:

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

Rola, która próbuje ją przyjąć, będzie potrzebować konkretnej uprawnienia sts:AssumeRole wobec tej roli, aby ją przyjąć.

Jeśli próbujesz przyjąć rolę z innego konta, to przyjęta rola musi na to zezwolić (wskazując ARN roli lub zewnętrzne konto), a rola próbująca ją przyjąć musi mieć uprawnienia do jej przyjęcia (w tym przypadku nie jest to opcjonalne, nawet jeśli przyjęta rola określa ARN).

Wyliczenie

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

Eskalacja uprawnień

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

Po eksploatacji

Trwałość

Odnośniki

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated