AWS - Codestar Privesc
{{#include ../../../../banners/hacktricks-training.md}}
Codestar
Puedes encontrar más información sobre codestar en:
{{#ref}} codestar-createproject-codestar-associateteammember.md {{#endref}}
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:
{{#ref}} iam-passrole-codestar-createproject.md {{#endref}}
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:
{{#ref}} codestar-createproject-codestar-associateteammember.md {{#endref}}
codestar:CreateProjectFromTemplate
- Crear un Nuevo Proyecto:
- Utiliza la acción
codestar:CreateProjectFromTemplatepara 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 del proyecto genérico>-CloudFormation.
- Actualizar la Pila Objetivo:
- Con los permisos de CloudFormation otorgados, procede a actualizar la pila especificada.
- El nombre de la pila generalmente se ajustará a uno de dos patrones:
awscodestar-<nombre del proyecto genérico>-infrastructureawscodestar-<nombre del proyecto genérico>-lambda- El nombre exacto depende de la plantilla elegida (referenciando el script de explotación de ejemplo).
- 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.
{{#include ../../../../banners/hacktricks-training.md}}