GCP - Compute Privesc
Compute
Für weitere Informationen zu Compute und VPC (Netzwerk) in GCP siehe:
GCP - Compute EnumBeachte, 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
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:
GCP - Add Custom SSH MetadataDu könntest diesen Angriff auch durchführen, indem du ein neues Startskript hinzufügst und die Instanz neu startest:
compute.instances.setMetadata
compute.instances.setMetadata
Diese Berechtigung gibt die gleichen Privilegien wie die vorherige Berechtigung, jedoch über spezifische Instanzen anstelle eines gesamten Projekts. Die gleichen Exploits und Einschränkungen wie im vorherigen Abschnitt gelten.
compute.instances.setIamPolicy
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.
compute.instances.osLogin
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.
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
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.
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
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 Dienstkonto zu erstellen und das Token des Dienstkontos zu stehlen, indem man auf die Metadaten zugreift, um die Privilegien zu eskalieren.
Das Exploit-Skript für diese Methode finden Sie hier.
osconfig.patchDeployments.create
| osconfig.patchJobs.exec
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ür einen Patch-Job führen Sie aus:
Um ein Patch-Deployment bereitzustellen:
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
compute.machineImages.setIamPolicy
Gewähren Sie sich zusätzliche Berechtigungen für das Compute-Image.
compute.snapshots.setIamPolicy
compute.snapshots.setIamPolicy
Gewähren Sie sich zusätzliche Berechtigungen für einen Festplattensnapshot.
compute.disks.setIamPolicy
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 pivotingReferenzen
Last updated