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
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
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:
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:
- compute.instances.osLogin
- compute.instances.osAdminLogin
- compute.projects.setCommonInstanceMetadata
- compute.instances.setMetadata
- compute.instances.setIamPolicy
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>
HackTricks Cloud

