AWS - STS Enum

Reading time: 4 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

STS

AWS Security Token Service (STS) je prvenstveno dizajniran za izdavanje privremenih, ograničenih privilegija. Ove privilegije se mogu zatražiti za AWS Identity and Access Management (IAM) korisnike ili za autentifikovane korisnike (federisane korisnike).

S obzirom na to da je svrha STS-a da izdaje privilegije za impersonaciju identiteta, usluga je izuzetno vredna za eskalaciju privilegija i održavanje postojanosti, iako možda nema širok spektar opcija.

Assume Role Impersonation

Akcija AssumeRole koju pruža AWS STS je ključna jer omogućava principalu da dobije privilegije za drugog principala, suštinski ga impersonirajući. Nakon poziva, odgovara sa ID-jem pristupnog ključa, tajnim ključem i sesijskim tokenom koji odgovara specificiranom ARN-u.

Za Penetration Testere ili članove Red Teama, ova tehnika je od suštinskog značaja za eskalaciju privilegija (kako je objašnjeno ovde). Međutim, vredi napomenuti da je ova tehnika prilično očigledna i možda neće iznenaditi napadača.

Assume Role Logic

Da bi se preuzela uloga u istom nalogu, ako uloga koju treba preuzeti specifično dozvoljava ARN uloge kao u:

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

Uloga priv-role u ovom slučaju ne mora biti posebno dozvoljena da preuzme tu ulogu (sa tom dozvolom je dovoljno).

Međutim, ako uloga dozvoljava nalogu da je preuzme, kao u:

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

Uloga koju pokušavate da preuzmete će zahtevati specifičnu sts:AssumeRole dozvolu za tu ulogu da bi je preuzeli.

Ako pokušate da preuzmete ulogu iz drugog naloga, preuzeta uloga mora to da dozvoli (navodeći ARN uloge ili spoljni nalog), a uloga koja pokušava da preuzme drugu MORA da ima dozvole da je preuzme (u ovom slučaju to nije opcionalno čak i ako preuzeta uloga specificira ARN).

Enumeration

bash
# 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 sledećoj stranici možete proveriti kako da zloupotrebite STS dozvole za eskalaciju privilegija:

AWS - STS Privesc

Post Exploitation

AWS - STS Post Exploitation

Persistence

AWS - STS Persistence

References

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks