AWS - STS Privesc
Reading time: 6 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 role huundwa na role trust policy, sera hii inaonyesha nani anaweza kuchukua role iliyoundwa. Iwapo role kutoka kwa akaunti ile ile inasema kwamba akaunti inaweza kui-chukua, hiyo inamaanisha akaunti itakuwa na uwezo wa kufikia role (na labda privesc).
Kwa mfano, role trust policy ifuatayo inaonyesha kwamba mtu yeyote anaweza kui-chukua, kwa hiyo mtumiaji yeyote ataweza kufanya privesc kwa ruhusa zinazohusishwa na role hiyo.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "sts:AssumeRole"
}
]
}
Unaweza kuiga role inayoendesha:
aws sts assume-role --role-arn $ROLE_ARN --role-session-name sessionname
Athari Inayoweza Kutokea: Privesc kwa role.
caution
Kumbuka kwamba katika kesi hii ruhusa sts:AssumeRole inahitaji kuwa imeainishwa kwenye role ya kutumika na si katika sera inayomilikiwa na mshambuliaji.
Isipokuwa kwa ubaguzi mmoja, ili kuchukua role kutoka kwa account tofauti akaunti ya mshambuliaji pia inahitaji kuwa na sts:AssumeRole juu ya role.
sts:AssumeRoleWithSAML
Sera ya trust yenye role hii inawapa watumiaji walioidhinishwa kupitia SAML ufikiaji wa kujifanya role.
Mfano wa trust policy 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 kuzalisha credentials ili kujifanya kama role, 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 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
Potential Impact: Privesc kwa role.
sts:AssumeRoleWithWebIdentity
Ruhusa hii inampa uwezo wa kupata seti ya vitambulisho vya muda kwa watumiaji walioidhinishwa katika programu za simu, programu za wavuti, EKS... kupitia mtoa utambulisho wa wavuti. Learn more here.
Kwa mfano, ikiwa EKS service account inapaswa kuweza impersonate an IAM role, itakuwa na token katika /var/run/secrets/eks.amazonaws.com/serviceaccount/token na inaweza assume the role and get credentials kwa kufanya 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 Roles Anywhere inaruhusu workloads zilizo nje ya AWS kuteua IAM roles kwa kutumia vyeti vya X.509. Lakini pale sera za imani hazijatengwa vizuri, zinaweza kutumika vibaya kwa ajili ya privilege escalation.
Ili kuelewa shambulio hili, ni muhimu kueleza ni nini trust anchor. Trust anchor katika AWS IAM Roles Anywhere ni chanzo cha imani (root of trust); ina cheti la umma la Certificate Authority (CA) lililosajiliwa katika akaunti ili AWS iweze kuthibitisha vyeti vya X.509 vilivyowasilishwa. Kwa njia hii, ikiwa cheti cha mteja kilitolewa na CA hiyo na trust anchor iko hai, AWS kinakitambua kuwa halali.
Zaidi ya hayo, profaili ni usanidi unaoelezea ni sifa gani za cheti cha X.509 (kama CN, OU, au SAN) zitakazogeuzwa kuwa tagi za kikao, na tagi hizi baadaye zitalinganishwa dhidi ya masharti ya sera za imani.
Sera hii haijaweka vizuizi juu ya nguzo za imani (trust anchor) au sifa za cheti zinazoruhusiwa. Matokeo yake, cheti chochote kilichounganishwa na nguzo yoyote ya imani katika akaunti kinaweza kutumika kuteua role hii.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "rolesanywhere.amazonaws.com"
},
"Action": [
"sts:AssumeRole",
"sts:SetSourceIdentity",
"sts:TagSession"
]
}
]
}
Ili kufanya privesc, aws_signing_helper inahitajika kutoka https://docs.aws.amazon.com/rolesanywhere/latest/userguide/credential-helper.html
Kisha, kwa kutumia cheti halali, mshambuliaji anaweza pivot into role yenye ruhusa 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
Trust anchor inathibitisha kwamba cheti la mteja readonly.pem linatoka kwa CA yake iliyoruhusiwa, na ndani ya cheti hicho readonly.pem kuna ufunguo wa umma ambao AWS hutumia kuthibitisha kwamba saini ilitengenezwa kwa kutumia ufunguo wake wa faragha unaolingana readonly.key.
Cheti pia kinatoa sifa (kama CN au OU) ambazo default profile hubadilisha kuwa tags, ambazo trust policy ya role inaweza kutumia kuamua iwapo itaruhusu upatikanaji. Ikiwa hakuna masharti katika trust policy, tags hizo hazina matumizi, na upatikanaji unatolewa kwa mtu yeyote mwenye cheti halali.
Ili shambulio hili liwezekane, trust anchor na default profile zote lazima ziwe hai.
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.
HackTricks Cloud