AWS - STS Enum
Tip
Ucz się & ćwicz AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Wspieraj HackTricks
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
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 zakresu 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 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 (z tym zezwoleniem wystarczy).
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 do tej roli 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).
Enumeracja
# 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żyć uprawnień STS, aby eskalować uprawnienia:
Post Exploitation
Persistence
References
Tip
Ucz się & ćwicz AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Wspieraj HackTricks
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
HackTricks Cloud

