GCP - Privilege Escalation

Aprende hacking en AWS de cero a héroe con htARTE (Experto en Equipos Rojos de HackTricks en AWS)!

Otras formas de apoyar a HackTricks:

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ómputo, 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, ingresar 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 suceder).

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.

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

  2. 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 estas 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:

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

pageGCP - local privilege escalation ssh pivoting

Referencias

Aprende hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Última actualización