GCP - local privilege escalation ssh pivoting

Tip

Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprende y practica Hacking en Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks

in this scenario we are going to suppose that you have compromised a non privilege account inside a VM in a Compute Engine project.

Asombrosamente, GPC permissions of the compute engine you have compromised may help you to escalate privileges locally inside a machine. Aunque eso no siempre será muy útil en un entorno en la nube, es bueno saber que es posible.

Leer los scripts

Compute Instances probablemente estén allí para ejecutar algunos scripts que realicen acciones con sus cuentas de servicio.

Como IAM es muy granular, una cuenta puede tener privilegios read/write sobre un recurso pero no list privileges.

Un gran ejemplo hipotético de esto es una Compute Instance que tiene permiso para read/write backups a un storage bucket llamado instance82736-long-term-xyz-archive-0332893.

Ejecutar gsutil ls desde la línea de comando no devuelve nada, ya que la cuenta de servicio carece del permiso IAM storage.buckets.list. Sin embargo, si ejecutas gsutil ls gs://instance82736-long-term-xyz-archive-0332893 podrías encontrar una copia de seguridad completa del sistema de archivos, dándote acceso en texto claro a datos que tu cuenta local de Linux no posee.

Puede que puedas encontrar este nombre de bucket dentro de un script (en bash, Python, Ruby…).

Custom Metadata

Los administradores pueden añadir custom metadata a nivel de instancia y proyecto. Esto es simplemente una forma de pasar pares arbitrarios clave/valor a una instancia, y se usa comúnmente para variables de entorno y scripts de inicio/apagado.

Además, es posible añadir userdata, que es un script que será ejecutado cada vez que la máquina se inicie o reinicie y que también puede ser accedido desde el metadata endpoint.

For more info check:

Cloud SSRF - HackTricks

Abusing IAM permissions

La mayoría de los permisos propuestos a continuación están given to the default Compute SA, el único problema es que el default access scope prevents the SA from using them. Sin embargo, si el cloud-platform scope está habilitado o sólo el compute scope está habilitado, podrás abusar de ellos.

Check the following permissions:

Buscar claves en el sistema de archivos

Comprueba si otros usuarios han iniciado sesión en gcloud dentro de la máquina y han dejado sus credenciales en el sistema de archivos:

Buscar credenciales de gcloud en el sistema de archivos ``` sudo find / -name "gcloud" ```

Estos son los archivos más interesantes:

  • ~/.config/gcloud/credentials.db
  • ~/.config/gcloud/legacy_credentials/[ACCOUNT]/adc.json
  • ~/.config/gcloud/legacy_credentials/[ACCOUNT]/.boto
  • ~/.credentials.json

Más expresiones regulares para API Keys

Patrones de grep para credenciales y claves de GCP ```bash TARGET_DIR="/path/to/whatever"

Service account keys

grep -Pzr “(?s){[^{}]?service_account[^{}]?private_key.*?}”
“$TARGET_DIR”

Legacy GCP creds

grep -Pzr “(?s){[^{}]?client_id[^{}]?client_secret.*?}”
“$TARGET_DIR”

Google API keys

grep -Pr “AIza[a-zA-Z0-9\-_]{35}”
“$TARGET_DIR”

Google OAuth tokens

grep -Pr “ya29.[a-zA-Z0-9_-]{100,200}”
“$TARGET_DIR”

Generic SSH keys

grep -Pzr “(?s)—–BEGIN[ A-Z]?PRIVATE KEY[a-zA-Z0-9/+=\n-]?END[ A-Z]*?PRIVATE KEY—–”
“$TARGET_DIR”

Signed storage URLs

grep -Pir “storage.googleapis.com.*?Goog-Signature=[a-f0-9]+”
“$TARGET_DIR”

Signed policy documents in HTML

grep -Pzr ‘(?s)<form action.?googleapis.com.?name=“signature” value=“.*?”>’
“$TARGET_DIR”

</details>

## Referencias

- [https://about.gitlab.com/blog/2020/02/12/plundering-gcp-escalating-privileges-in-google-cloud-platform/](https://about.gitlab.com/blog/2020/02/12/plundering-gcp-escalating-privileges-in-google-cloud-platform/)

> [!TIP]
> Aprende y practica Hacking en AWS:<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">\
> Aprende y practica Hacking en GCP: <img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)<img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
> Aprende y practica Hacking en Azure: <img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training Azure Red Team Expert (AzRTE)**](https://training.hacktricks.xyz/courses/azrte)<img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
>
> <details>
>
> <summary>Apoya a HackTricks</summary>
>
> - Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
> - **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos en** **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
> - **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
>
> </details>