AWS - STS Enum

Support 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 federacyjnych).

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

Podszywanie się pod rolę

Akcja AssumeRole dostarczona przez AWS STS jest kluczowa, ponieważ pozwala podmiotowi na uzyskanie poświadczeń dla innego podmiotu, zasadniczo się pod niego podszywając. Po wywołaniu, odpowiada kluczem dostępu, kluczem tajnym i tokenem sesji odpowiadającym określonemu ARN.

Dla testerów penetracyjnych lub członków zespołu Red Team, 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 podszywania się pod rolę

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 (wystarczy to zezwolenie).

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, którą próbujesz przyjąć, będzie potrzebować specyficznego uprawnienia sts:AssumeRole nad tą rolą aby ją przyjąć.

Jeśli spróbujesz przyjąć rolę z innego konta, przyjęta rola musi to umożliwić (wskazując ARN roli lub zewnętrzne konto), a rola próbująca przyjąć tę drugą MUSI mieć uprawnienia do jej przyjęcia (w tym przypadku nie jest to opcjonalne, nawet jeśli przyjęta rola określa 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 poniższej stronie możesz sprawdzić, jak nadużywać uprawnień STS, aby eskalować uprawnienia:

Post Exploitation

Persistence

References

Wsparcie HackTricks

Last updated