GCP - Privilege Escalation

Support HackTricks

Introducción a la Escalación de Privilegios en GCP

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 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.

Permisos para la Metodología de Escalación de Privilegios

Así es como pruebo permisos específicos para realizar acciones específicas dentro de GCP.

  1. Descarga el repositorio de github https://github.com/carlospolop/gcp_privesc_scripts

  2. Agrega en tests/ el nuevo script

Eludir los alcances de acceso

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:

for i in $(gcloud iam service-accounts list --format="table[no-heading](email)"); do
echo "Looking for keys for $i:"
gcloud iam service-accounts keys list --iam-account $i
done

Técnicas de Escalación 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 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.

Abusando de GCP para escalar privilegios localmente

Si estás dentro de una máquina en GCP, podrías ser capaz de abusar de los permisos para escalar privilegios incluso localmente:

Referencias

Support HackTricks

Last updated