AWS - STS Privesc

Support HackTricks

STS

sts:AssumeRole

Kila jukumu lina sera ya kuamini jukumu, sera hii inaonyesha nani anaweza kuchukua jukumu lililotengenezwa. Ikiwa jukumu kutoka kwa akaunti ile ile linasema kwamba akaunti inaweza kuchukua, inamaanisha kwamba akaunti hiyo itakuwa na uwezo wa kufikia jukumu hilo (na kwa uwezekano privesc).

Kwa mfano, sera ifuatayo ya kuamini jukumu inaonyesha kwamba mtu yeyote anaweza kuchukua, kwa hivyo mtumiaji yeyote ataweza privesc kwa ruhusa zinazohusiana na jukumu hilo.

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

Unaweza kujifanya kuwa jukumu kwa kukimbia:

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

Madhara Yanayoweza Kutokea: Privesc kwa jukumu.

Kumbuka kwamba katika kesi hii ruhusa sts:AssumeRole inahitaji kuwa imeonyeshwa katika jukumu la kutumia vibaya na si katika sera inayomilikiwa na mshambuliaji. Kwa ubaguzi mmoja, ili kuchukua jukumu kutoka akaunti tofauti akaunti ya mshambuliaji pia inahitaji kuwa na sts:AssumeRole juu ya jukumu.

sts:GetFederationToken

Kwa ruhusa hii inawezekana kuzalisha ithibati za kujifanya kuwa mtumiaji yeyote:

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

Hii ndiyo njia ambayo ruhusa hii inaweza kutolewa kwa usalama bila kutoa ufikiaji wa kujifanya kuwa watumiaji wengine:

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "sts:GetFederationToken",
"Resource": "arn:aws:sts::947247140022:federated-user/${aws:username}"
}
]
}

sts:AssumeRoleWithSAML

Sera ya kuaminiana na jukumu hili inatoa watumiaji walioidhinishwa kupitia SAML ufikiaji wa kujifanya kuwa jukumu hilo.

Mfano wa sera ya kuaminiana yenye ruhusa hii ni:

{
"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"
}
}
}
]
}

Ili kuunda akreditivu za kujifanya kuwa na jukumu kwa ujumla unaweza kutumia kitu kama:

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

Lakini watoa huduma wanaweza kuwa na zana zao za kufanya hii iwe rahisi, kama onelogin-aws-assume-role:

onelogin-aws-assume-role --onelogin-subdomain mettle --onelogin-app-id 283740 --aws-region eu-west-1 -z 3600

Madhara Yanayoweza Kutokea: Privesc kwa jukumu.

sts:AssumeRoleWithWebIdentity

Ruhusa hii inatoa ruhusa ya kupata seti ya akreditif za usalama za muda kwa watumiaji ambao wamethibitishwa katika programu za rununu, wavuti, EKS... na mtoa huduma wa utambulisho wa wavuti. Jifunze zaidi hapa.

Kwa mfano, ikiwa akaunti ya huduma ya EKS inapaswa kuwa na uwezo wa kujifanya kama jukumu la IAM, itakuwa na token katika /var/run/secrets/eks.amazonaws.com/serviceaccount/token na inaweza kuchukua jukumu na kupata akreditif ikifanya kitu kama:

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

Support HackTricks

Last updated