GCP - Compute Privesc
Compute
Para más información sobre Compute y VPC (red) en GCP, consulta:
GCP - Compute EnumTen en cuenta que para realizar todos los ataques de escalada de privilegios que requieren modificar los metadatos de la instancia (como agregar nuevos usuarios y claves SSH) es necesario que tengas permisos actAs
sobre la SA adjunta a la instancia, ¡incluso si la SA ya está adjunta!
compute.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 sudo. Por lo tanto, podrás acceder vía SSH a 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 poder contactar al servidor SSH para iniciar sesión
Para más información sobre cómo explotar este permiso, consulta:
GCP - Add Custom SSH MetadataTambién podrías realizar este ataque agregando un nuevo script de inicio y reiniciando la instancia:
compute.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. Los mismos exploits y limitaciones que para la sección anterior se aplican.
compute.instances.setIamPolicy
compute.instances.setIamPolicy
Este tipo de permiso te permitirá otorgarte un rol con los permisos anteriores y escalar privilegios abusando de ellos.
compute.instances.osLogin
compute.instances.osLogin
Si OSLogin está habilitado en la instancia, con este permiso solo puedes ejecutar gcloud compute ssh [INSTANCE]
y conectarte a la instancia. No tendrás privilegios de root dentro de la instancia.
Para iniciar sesión con éxito con este permiso dentro de la instancia de VM, necesitas tener el permiso iam.serviceAccounts.actAs
sobre la SA adjunta a la VM.
compute.instances.osAdminLogin
compute.instances.osAdminLogin
Si OSLogin está habilitado en la instancia, con este permiso solo puedes ejecutar gcloud compute ssh [INSTANCE]
y conectarte a la instancia. Tendrás privilegios de root dentro de la instancia.
Para iniciar sesión con éxito con este permiso dentro de la instancia de VM, necesitas tener el permiso iam.serviceAccounts.actAs
sobre la SA adjunta a la VM.
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 exploit para este método se puede encontrar aquí.
osconfig.patchDeployments.create
| osconfig.patchJobs.exec
osconfig.patchDeployments.create
| osconfig.patchJobs.exec
Si tienes los permisos osconfig.patchDeployments.create
o osconfig.patchJobs.exec
puedes crear un trabajo de parcheo o despliegue. 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.
Ten en cuenta que en este momento no necesitas el permiso actAs
sobre la SA adjunta a la instancia.
Si deseas explotar esto manualmente, necesitarás crear ya sea un trabajo de parcheo o despliegue. Para un trabajo de parcheo ejecuta:
Para implementar un despliegue de parches:
La herramienta patchy podría haberse utilizado en el pasado para explotar esta mala configuración (pero ahora no está funcionando).
Un atacante también podría abusar de esto para persistencia.
compute.machineImages.setIamPolicy
compute.machineImages.setIamPolicy
Otórgate permisos adicionales para la imagen de cómputo.
compute.snapshots.setIamPolicy
compute.snapshots.setIamPolicy
Otórgate permisos adicionales para un snapshot de disco.
compute.disks.setIamPolicy
compute.disks.setIamPolicy
Otórgate permisos adicionales para un disco.
Bypass Access Scopes
Siguiendo este enlace encontrarás algunas ideas para intentar eludir los scopes de acceso.
Escalación de privilegios local en la instancia de GCP Compute
GCP - local privilege escalation ssh pivotingReferencias
Last updated