GCP - Privilege Escalation
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
GCP, como cualquier otra nube, tiene algunos principales: usuarios, grupos y cuentas de servicio, y algunos recursos como compute engine, cloud functions… 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. Hay 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 escalación 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 escalación de privilegios en GCP en 2 grupos:
Privesc a un principal: Esto te permitirá suplantar a otro principal, y por lo tanto actuar como él con todos sus permisos. p.ej.: Abusar de getAccessToken para suplantar a una cuenta de servicio.
Privesc sobre el recurso: Esto te permitirá obtener más permisos sobre el recurso específico. p.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 un SA, entrar en el recurso y robar el token del SA. Por lo tanto, esto permitirá escalar a un principal a través de una escalación de recursos. Esto ha sucedido en varios recursos anteriormente, pero ahora es menos frecuente (pero aún puede suceder).
Obviamente, las técnicas de escalación 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 un SA).
Es importante notar también que en GCP las Cuentas de Servicio son tanto principales como permisos, por lo que escalar privilegios en un SA también te permitirá suplantarlo.
Los permisos entre paréntesis indican los permisos necesarios para explotar la vulnerabilidad con gcloud
. Esos pueden no ser necesarios si se explota a través de la API.
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
Los tokens de SA filtrados del servicio de metadatos de GCP tienen alcances de acceso. Estas son restricciones sobre los permisos que tiene el token. Por ejemplo, si el token tiene el https://www.googleapis.com/auth/cloud-platform
alcance, tendrá acceso total a todos los servicios de GCP. Sin embargo, si el token tiene el https://www.googleapis.com/auth/cloud-platform.read-only
alcance, solo tendrá acceso de solo lectura a todos los servicios de GCP incluso si el SA tiene más permisos en IAM.
No hay una forma directa de eludir estos permisos, pero siempre podrías intentar buscar nuevas credenciales en el host comprometido, encontrar la clave del servicio para generar un token OAuth sin restricciones o saltar a una VM diferente menos restringida.
Cuando se utilizan alcances de acceso, el token OAuth que se genera para la instancia de computación (VM) tendrá una limitación de alcance incluida. Sin embargo, podrías ser capaz de eludir esta limitación y explotar los permisos que tiene la cuenta comprometida.
La mejor manera de eludir esta restricción es encontrar nuevas credenciales en el host comprometido, encontrar la clave del servicio para generar un token OAuth sin restricciones o comprometer una VM diferente con un SA menos restringido.
Verifica SA con claves generadas con:
La forma de escalar tus privilegios en AWS es tener suficientes permisos para poder, de alguna manera, acceder a los privilegios de otras cuentas de servicio/usuarios/grupos. Encadenar escalaciones hasta que tengas acceso de administrador sobre la organización.
GCP tiene cientos (si no miles) de permisos que se pueden otorgar a una entidad. 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.
Si estás dentro de una máquina en GCP, podrías ser capaz de abusar de los permisos para escalar privilegios incluso localmente:
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)