AWS - STS Privesc

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

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.

json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "sts:AssumeRole"
}
]
}

Možete se pretvarati da ste uloga koja se izvršava:

bash
aws sts assume-role --role-arn $ROLE_ARN --role-session-name sessionname

Potencijalni Uticaj: Privesc na ulogu.

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 druge računa, napadačev račun takođe treba da ima sts:AssumeRole nad ulogom.

sts:GetFederationToken

Sa ovom dozvolom je moguće generisati akreditive za impersonaciju bilo kog korisnika:

bash
aws sts get-federation-token --name <username>

Ovako se ova dozvola može dati sigurno, bez davanja pristupa za imitaciju drugih korisnika:

json
{
"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:

json
{
"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, generalno možete koristiti nešto poput:

bash
aws sts  assume-role-with-saml --role-arn <value> --principal-arn <value>

Ali provajderi mogu imati svoje alate koji olakšavaju ovo, kao što je onelogin-aws-assume-role:

bash
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 akreditiva 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 imitira IAM ulogu, imaće token u /var/run/secrets/eks.amazonaws.com/serviceaccount/token i može da preuzme ulogu i dobije akreditive radeći nešto poput:

bash
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

Zloupotreba federacije

AWS - Federation Abuse

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