GCP - IAM, Principals & Org Policies Enum
Dienstkonten
Für eine Einführung darüber, was ein Dienstkonto ist, siehe:
pageGCP - Basic InformationEnumeration
Ein Dienstkonto gehört immer zu einem Projekt:
Benutzer & Gruppen
Für eine Einführung darüber, wie Benutzer & Gruppen in GCP funktionieren, siehe:
pageGCP - Basic InformationAuflistung
Mit den Berechtigungen serviceusage.services.enable
und serviceusage.services.use
ist es möglich, Dienste zu aktivieren und sie in einem Projekt zu verwenden.
Beachten Sie, dass standardmäßig Workspace-Benutzern die Rolle Projektersteller zugewiesen wird, was ihnen Zugriff gibt, neue Projekte zu erstellen. Wenn ein Benutzer ein Projekt erstellt, erhält er die Rolle owner
darüber. Daher könnte er diese Dienste im Projekt aktivieren, um Workspace aufzulisten.
Es ist jedoch auch erforderlich, ausreichende Berechtigungen in Workspace zu haben, um diese APIs aufrufen zu können.
Wenn Sie den Dienst admin
aktivieren können und wenn Ihr Benutzer ausreichende Berechtigungen in Workspace hat, könnten Sie alle Gruppen & Benutzer auflisten mit den folgenden Befehlen.
Auch wenn es Identitätsgruppen
heißt, gibt es auch Benutzer ohne Gruppen zurück:
In den vorherigen Beispielen ist der Parameter --labels
erforderlich, daher wird ein generischer Wert verwendet (es ist nicht erforderlich, wenn Sie die API direkt wie PurplePanda hier tut verwenden.
Auch wenn der Admin-Dienst aktiviert ist, kann es sein, dass Sie beim Aufzählen Fehler erhalten, weil Ihr kompromittierter Workspace-Benutzer nicht über ausreichende Berechtigungen verfügt:
IAM
Überprüfen Sie dies für grundlegende Informationen zu IAM.
Standardberechtigungen
Gemäß den Dokumenten: Wenn ein Organisationsressource erstellt wird, erhalten standardmäßig alle Benutzer in Ihrer Domäne die Rollen Billing Account Creator und Project Creator. Diese Standardrollen ermöglichen es Ihren Benutzern, Google Cloud sofort zu nutzen, sind jedoch nicht für den regulären Betrieb Ihrer Organisationsressource vorgesehen.
Diese Rollen gewähren die Berechtigungen:
billing.accounts.create
undresourcemanager.organizations.get
resourcemanager.organizations.get
undresourcemanager.projects.create
Darüber hinaus wird einem Benutzer beim Erstellen eines Projekts automatisch gemäß den Dokumenten der Eigentümer dieses Projekts zugewiesen. Daher kann ein Benutzer standardmäßig ein Projekt erstellen und jeden Dienst darauf ausführen (Miner? Workspace-Aufzählung? ...)
Die höchste Berechtigung in einer GCP-Organisation ist die Rolle des Organisationsadministrators.
set-iam-policy vs add-iam-policy-binding
In den meisten Diensten können Sie die Berechtigungen für eine Ressource mit der Methode add-iam-policy-binding
oder set-iam-policy
ändern. Der Hauptunterschied besteht darin, dass add-iam-policy-binding
eine neue Rollenbindung zur vorhandenen IAM-Richtlinie hinzufügt, während set-iam-policy
die zuvor gewährten Berechtigungen löscht und nur die im Befehl angegebenen setzt.
Aufzählung
Cloudasset IAM Enumeration
Es gibt verschiedene Möglichkeiten, um alle Berechtigungen eines Benutzers in verschiedenen Ressourcen (wie Organisationen, Ordner, Projekte...) mithilfe dieses Dienstes zu überprüfen.
Die Berechtigung
cloudasset.assets.searchAllIamPolicies
kann alle IAM-Richtlinien innerhalb einer Ressource abrufen.
Die Berechtigung
cloudasset.assets.analyzeIamPolicy
kann alle IAM-Richtlinien eines Prinzipals innerhalb eines Ressourcenobjekts anfordern.
Die Berechtigung
cloudasset.assets.searchAllResources
ermöglicht das Auflisten aller Ressourcen einer Organisation, eines Ordners oder Projekts. IAM-bezogene Ressourcen (wie Rollen) sind inbegriffen.
Die Berechtigung
cloudasset.assets.analyzeMove
kann auch nützlich sein, um Richtlinien abzurufen, die sich auf eine Ressource wie ein Projekt auswirken.
Ich vermute, dass die Berechtigung
cloudasset.assets.queryIamPolicy
auch Zugriff auf die Suche nach Berechtigungen von Prinzipalen geben könnte.
testIamPermissions Enumeration
Wenn Sie keinen Zugriff auf IAM-Informationen mit den vorherigen Methoden haben und im Red Team sind, könnten Sie das Tool https://github.com/carlospolop/bf_my_gcp_perms verwenden, um Ihre aktuellen Berechtigungen per Brute-Force zu erzwingen.
Beachten Sie jedoch, dass der Dienst cloudresourcemanager.googleapis.com
aktiviert sein muss.
Privesc
Auf der folgenden Seite können Sie nachlesen, wie Sie IAM-Berechtigungen missbrauchen, um Privilegien zu eskalieren:
pageGCP - IAM PrivescUnauthenticated Enum
pageGCP - IAM, Principals & Org Unauthenticated EnumPost Exploitation
pageGCP - IAM Post ExploitationPersistence
Wenn Sie hohe Berechtigungen haben, könnten Sie:
Neue SAs erstellen (oder Benutzer, wenn Sie in Workspace sind)
Prinzipale, die von Ihnen kontrolliert werden, mehr Berechtigungen geben
Mehr Privilegien an anfällige SAs geben (SSRF in vm, vuln Cloud Function...)
...
Org Policies
Für eine Einführung in das, was Org Policies sind, siehe:
pageGCP - Basic InformationDie IAM-Richtlinien geben an, welche Berechtigungen Prinzipale über Ressourcen über Rollen haben, die granulare Berechtigungen zugewiesen bekommen. Organisationsrichtlinien beschränken, wie diese Dienste verwendet werden können oder welche Funktionen deaktiviert sind. Dies hilft, um das Prinzip des geringsten Privilegs für jede Ressource in der GCP-Umgebung zu verbessern.
Berechtigungserhöhung
Auf der folgenden Seite können Sie nachschauen, wie Sie Organisationsrichtlinienberechtigungen missbrauchen, um Berechtigungen zu eskalieren:
pageGCP - Orgpolicy PrivescLast updated