AWS - STS Privesc
Reading time: 5 minutes
tip
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Jifunze na fanya mazoezi ya Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
STS
sts:AssumeRole
Kila jukumu linaumbwa na sera ya kuamini jukumu, sera hii inaonyesha nani anaweza kuchukua jukumu lililoundwa. Ikiwa jukumu kutoka kwa akaunti ile ile linasema kwamba akaunti inaweza kulichukua, 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 kulichukua, hivyo basi 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 linalotembea:
aws sts assume-role --role-arn $ROLE_ARN --role-session-name sessionname
Madhara Yanayoweza Kutokea: Privesc kwa jukumu.
caution
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 akidi 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 kama 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 na 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 akreditif 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 simu, 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
IAM Roles Anywhere Privesc
AWS IAM RolesAnywhere inaruhusu kazi za nje ya AWS kuchukua majukumu ya IAM kwa kutumia vyeti vya X.509. Lakini wakati sera za kuamini hazijapangwa vizuri, zinaweza kutumika vibaya kwa ajili ya kupandisha hadhi.
Sera hii haina vizuizi juu ya ni vipi kiunganishi cha kuamini au sifa za cheti zinazoruhusiwa. Kama matokeo, cheti chochote kilichounganishwa na kiunganishi chochote cha kuamini katika akaunti kinaweza kutumika kuchukua jukumu hili.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "rolesanywhere.amazonaws.com"
},
"Action": [
"sts:AssumeRole",
"sts:SetSourceIdentity",
"sts:TagSession"
]
}
]
}
Ili kupata haki za juu, aws_signing_helper
inahitajika kutoka https://docs.aws.amazon.com/rolesanywhere/latest/userguide/credential-helper.html
Kisha kwa kutumia cheti halali, mshambuliaji anaweza kuhamasisha katika jukumu lenye haki za juu.
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
Marejeleo
tip
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Jifunze na fanya mazoezi ya Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.