GCP - Compute Privesc
Compute
Para obtener más información sobre Compute y VPC (red) en GCP, consulta:
pageGCP - Compute Enumcompute.projects.setCommonInstanceMetadata
compute.projects.setCommonInstanceMetadata
Con ese permiso puedes modificar la información de metadatos de una instancia y cambiar las claves autorizadas de un usuario, o crear un nuevo usuario con permisos de sudo. Por lo tanto, podrás ejecutar vía SSH en cualquier instancia de VM y robar la Cuenta de Servicio de GCP con la que se está ejecutando la instancia. Limitaciones:
Ten en cuenta que las Cuentas de Servicio de GCP que se ejecutan en instancias de VM por defecto tienen un alcance muy limitado
Necesitarás ser capaz de contactar al servidor SSH para iniciar sesión
Para obtener más información sobre cómo explotar este permiso, consulta:
pageGCP - Add Custom SSH Metadatacompute.instances.setMetadata
compute.instances.setMetadata
Este permiso otorga los mismos privilegios que el permiso anterior pero sobre instancias específicas en lugar de un proyecto completo. Se aplican los mismos exploits y limitaciones que para la sección anterior.
compute.instances.setIamPolicy
compute.instances.setIamPolicy
Este tipo de permiso te permitirá concederte un rol con los permisos anteriores y escalar privilegios abusándolos.
compute.instances.osLogin
compute.instances.osLogin
Si OSLogin está habilitado en la instancia, con este permiso simplemente puedes ejecutar gcloud compute ssh [INSTANCIA]
y conectarte a la instancia. No tendrás privilegios de root dentro de la instancia.
compute.instances.osAdminLogin
compute.instances.osAdminLogin
Si OSLogin está habilitado en la instancia, con este permiso simplemente puedes ejecutar gcloud compute ssh [INSTANCIA]
y conectarte a la instancia. Tendrás privilegios de root dentro de la instancia.
compute.instances.create
,iam.serviceAccounts.actAs, compute.disks.create
, compute.instances.create
, compute.instances.setMetadata
, compute.instances.setServiceAccount
, compute.subnetworks.use
, compute.subnetworks.useExternalIp
compute.instances.create
,iam.serviceAccounts.actAs, compute.disks.create
, compute.instances.create
, compute.instances.setMetadata
, compute.instances.setServiceAccount
, compute.subnetworks.use
, compute.subnetworks.useExternalIp
Es posible crear una máquina virtual con una Cuenta de Servicio asignada y robar el token de la cuenta de servicio accediendo a los metadatos para escalar privilegios a ella.
El script de explotación para este método se puede encontrar aquí.
osconfig.patchDeployments.create
| osconfig.patchJobs.exec
osconfig.patchDeployments.create
| osconfig.patchJobs.exec
Si tienes los permisos de osconfig.patchDeployments.create
o osconfig.patchJobs.exec
puedes crear un trabajo o despliegue de parches. Esto te permitirá moverte lateralmente en el entorno y obtener ejecución de código en todas las instancias de cómputo dentro de un proyecto.
Si deseas explotarlo manualmente, deberás crear un trabajo de parche o despliegue para un trabajo de parche ejecuta:
gcloud compute os-config patch-jobs execute --file=patch.json
Para implementar un despliegue de parche:
gcloud compute os-config patch-deployments create my-update --file=patch.json
Existen herramientas automatizadas como patchy que detectan permisos laxos y se mueven lateralmente automáticamente.
También puedes abusar de esto para persistencia.
compute.machineImages.setIamPolicy
compute.machineImages.setIamPolicy
Concédate permisos adicionales para la Imagen de Cómputo.
compute.snapshots.setIamPolicy
compute.snapshots.setIamPolicy
Concédate permisos adicionales para una instantánea de disco.
compute.disks.setIamPolicy
compute.disks.setIamPolicy
Concédate permisos adicionales para un disco.
Saltar los Alcances de Acceso
Siguiendo este enlace encontrarás algunas ideas para intentar saltar los alcances de acceso.
Escalada de Privilegios Local en una instancia de Cómputo de GCP
pageGCP - local privilege escalation ssh pivotingReferencias
Última actualización