AWS - STS Privesc
Reading time: 5 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
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
STS
sts:AssumeRole
Svaka uloga se kreira sa politikom poverenja uloge, ova politika označava ko može da preuzme kreiranu ulogu. Ako uloga iz iste račun kaže da neki račun može da je preuzme, to znači da će taj račun moći da pristupi ulozi (i potencijalno privesc).
Na primer, sledeća politika poverenja uloge označava da bilo ko može da je preuzme, stoga bilo koji korisnik će moći da privesc na dozvole povezane sa tom ulogom.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "sts:AssumeRole"
}
]
}
Možete se pretvarati da ste uloga koja se izvršava:
aws sts assume-role --role-arn $ROLE_ARN --role-session-name sessionname
Potential Impact: Privesc do uloge.
caution
Imajte na umu da u ovom slučaju dozvola sts:AssumeRole
treba da bude naznačena u ulozi koju treba zloupotrebiti i ne u politici koja pripada napadaču.
Sa jednim izuzetkom, da bi se preuzela uloga iz drugog naloga napadačev nalog takođe treba da ima sts:AssumeRole
nad ulogom.
sts:GetFederationToken
Sa ovom dozvolom moguće je generisati akreditive za impersonaciju bilo kog korisnika:
aws sts get-federation-token --name <username>
Ovo je kako se ova dozvola može dati sigurno bez davanja pristupa za imitaciju drugih korisnika:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "sts:GetFederationToken",
"Resource": "arn:aws:sts::947247140022:federated-user/${aws:username}"
}
]
}
sts:AssumeRoleWithSAML
Politika poverenja sa ovom ulogom omogućava korisnicima koji su autentifikovani putem SAML da se pretvaraju da su uloga.
Primer politike poverenja sa ovom dozvolom je:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "OneLogin",
"Effect": "Allow",
"Principal": {
"Federated": "arn:aws:iam::290594632123:saml-provider/OneLogin"
},
"Action": "sts:AssumeRoleWithSAML",
"Condition": {
"StringEquals": {
"SAML:aud": "https://signin.aws.amazon.com/saml"
}
}
}
]
}
Da biste generisali akreditive za impersonaciju uloge, mogli biste koristiti nešto poput:
aws sts assume-role-with-saml --role-arn <value> --principal-arn <value>
Ali provajderi mogu imati svoje alate kako bi to olakšali, poput onelogin-aws-assume-role:
onelogin-aws-assume-role --onelogin-subdomain mettle --onelogin-app-id 283740 --aws-region eu-west-1 -z 3600
Potencijalni uticaj: Privesc na ulogu.
sts:AssumeRoleWithWebIdentity
Ova dozvola omogućava dobijanje skupa privremenih bezbednosnih kredencijala za korisnike koji su autentifikovani u mobilnoj, web aplikaciji, EKS... sa provajderom web identiteta. Saznajte više ovde.
Na primer, ako EKS servisni nalog treba da može da imitira IAM ulogu, imaće token u /var/run/secrets/eks.amazonaws.com/serviceaccount/token
i može da preuzme ulogu i dobije kredencijale radeći nešto poput:
aws sts assume-role-with-web-identity --role-arn arn:aws:iam::123456789098:role/<role_name> --role-session-name something --web-identity-token file:///var/run/secrets/eks.amazonaws.com/serviceaccount/token
# The role name can be found in the metadata of the configuration of the pod
Federation Abuse
IAM Roles Anywhere Privesc
AWS IAM RolesAnywhere omogućava radnim opterećenjima van AWS-a da preuzmu IAM uloge koristeći X.509 sertifikate. Međutim, kada politike poverenja nisu pravilno definisane, mogu se zloupotrebiti za eskalaciju privilegija.
Ova politika nema ograničenja o tome koji su trust anchor ili atributi sertifikata dozvoljeni. Kao rezultat, svaki sertifikat povezan sa bilo kojim trust anchor u nalogu može se koristiti za preuzimanje ove uloge.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "rolesanywhere.amazonaws.com"
},
"Action": [
"sts:AssumeRole",
"sts:SetSourceIdentity",
"sts:TagSession"
]
}
]
}
Za privesc, aws_signing_helper
je potreban sa https://docs.aws.amazon.com/rolesanywhere/latest/userguide/credential-helper.html
Zatim, koristeći važeći sertifikat, napadač može preći u ulogu sa višim privilegijama.
aws_signing_helper credential-process \
--certificate readonly.pem \
--private-key readonly.key \
--trust-anchor-arn arn:aws:rolesanywhere:us-east-1:123456789012:trust-anchor/ta-id \
--profile-arn arn:aws:rolesanywhere:us-east-1:123456789012:profile/default \
--role-arn arn:aws:iam::123456789012:role/Admin
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
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.