GCP - Privilege Escalation
Introducción a la Escalada de Privilegios en GCP
GCP, al igual que cualquier otra nube, tiene algunos principales: usuarios, grupos y cuentas de servicio, y algunos recursos como motor de cálculo, funciones en la nube... Luego, a través de roles, se otorgan permisos a esos principales sobre los recursos. Esta es la forma de especificar los permisos que un principal tiene sobre un recurso en GCP. Existen ciertos permisos que permitirán a un usuario obtener aún más permisos sobre el recurso o recursos de terceros, y eso es lo que se llama escalada de privilegios (también, la explotación de vulnerabilidades para obtener más permisos).
Por lo tanto, me gustaría separar las técnicas de escalada de privilegios de GCP en 2 grupos:
Escalada de privilegios a un principal: Esto te permitirá hacerte pasar por otro principal, y por lo tanto actuar como él con todos sus permisos. Ej.: Abusar de getAccessToken para hacerse pasar por una cuenta de servicio.
Escalada de privilegios en el recurso: Esto te permitirá obtener más permisos sobre el recurso específico. Ej.: puedes abusar del permiso setIamPolicy sobre cloudfunctions para permitirte activar la función.
Ten en cuenta que algunos permisos de recursos también te permitirán adjuntar una cuenta de servicio arbitraria al recurso. Esto significa que podrás lanzar un recurso con una SA, acceder al recurso y robar el token de la SA. Por lo tanto, esto permitirá escalar a un principal a través de una escalada de recursos. Esto ha ocurrido en varios recursos anteriormente, pero ahora es menos frecuente (pero aún puede ocurrir).
Obviamente, las técnicas de escalada de privilegios más interesantes son las del segundo grupo porque te permitirán obtener más privilegios fuera de los recursos sobre los que ya tienes algunos privilegios. Sin embargo, ten en cuenta que escalar en recursos también puede darte acceso a información sensible o incluso a otros principales (quizás a través de la lectura de un secreto que contiene un token de una SA).
También es importante tener en cuenta que en las cuentas de servicio de GCP son tanto principales como permisos, por lo que escalar privilegios en una SA te permitirá también hacerse pasar por ella.
Los permisos entre paréntesis indican los permisos necesarios para explotar la vulnerabilidad con gcloud
. Esos podrían no ser necesarios si se explota a través de la API.
Permisos para la Metodología de Escalada de Privilegios
Así es como pruebo permisos específicos para realizar acciones específicas dentro de GCP.
Descarga el repositorio de GitHub https://github.com/carlospolop/gcp_privesc_scripts
Agrega en tests/ el nuevo script
Saltando los alcances de acceso
Los tokens de SA filtrados desde el servicio de metadatos de GCP tienen alcances de acceso. Estos son restricciones sobre los permisos que tiene el token. Por ejemplo, si el token tiene el alcance https://www.googleapis.com/auth/cloud-platform
, tendrá acceso completo a todos los servicios de GCP. Sin embargo, si el token tiene el alcance https://www.googleapis.com/auth/cloud-platform.read-only
, solo tendrá acceso de solo lectura a todos los servicios de GCP, incluso si la SA tiene más permisos en IAM.
No hay una forma directa de saltar estos permisos, pero siempre puedes intentar buscar nuevas credenciales en el host comprometido, encontrar la clave de servicio para generar un token de OAuth sin restricciones o saltar a una VM diferente menos restringida.
Cuando se utilizan alcances de acceso, el token de OAuth que se genera para la instancia informática (VM) tendrá una limitación de alcance incluida. Sin embargo, es posible que puedas saltar esta limitación y explotar los permisos que tiene la cuenta comprometida.
La mejor manera de saltar esta restricción es encontrar nuevas credenciales en el host comprometido, encontrar la clave de servicio para generar un token de OAuth sin restricciones o comprometer una VM diferente con una SA menos restringida.
Verifica SA con claves generadas con:
Técnicas de Escalada de Privilegios
La forma de escalar tus privilegios en AWS es tener suficientes permisos para poder, de alguna manera, acceder a los privilegios de otras cuentas/usuarios/grupos de servicios. Encadenando escaladas hasta obtener acceso de administrador sobre la organización.
GCP tiene cientos (si no miles) de permisos que una entidad puede recibir. En este libro puedes encontrar todos los permisos que conozco que puedes abusar para escalar privilegios, pero si conoces algún camino no mencionado aquí, por favor compártelo.
Las subpáginas de esta sección están ordenadas por servicios. Puedes encontrar en cada servicio diferentes formas de escalar privilegios en los servicios.
Abusando de GCP para escalar privilegios localmente
Si estás dentro de una máquina en GCP, es posible que puedas abusar de los permisos para escalar privilegios incluso localmente:
GCP - local privilege escalation ssh pivotingReferencias
Last updated