GCP - Cloud Build Enum
Grundlegende Informationen
Google Cloud Build ist eine verwaltete CI/CD-Plattform, die den automatisierten Software-Build und Freigabeprozesse integriert mit Quellcode-Repositories und eine Vielzahl von Programmiersprachen unterstützt. Es ermöglicht Entwicklern, Code automatisch zu erstellen, zu testen und bereitzustellen, während es Flexibilität bietet, Build-Schritte und Workflows anzupassen.
Jeder Cloud Build Trigger ist mit einem Cloud-Repository verbunden oder direkt mit einem externen Repository verknüpft (Github, Bitbucket und Gitlab).
Ich konnte keine Möglichkeit sehen, den Github/Bitbucket-Token von hier oder von Cloud-Repositories zu stehlen, da beim Herunterladen des Repositories über eine https://source.cloud.google.com/ URL zugegriffen wird und Github nicht vom Client aus aufgerufen wird.
Ereignisse
Der Cloud Build kann ausgelöst werden, wenn:
Ein Push auf einen Branch erfolgt: Branch angeben
Ein neues Tag gepusht wird: Tag angeben
Pull-Request: Branch angeben, der den PR erhält
Manuelle Auslösung
Pub/Sub-Nachricht: Thema angeben
Webhook-Ereignis: Es wird eine HTTPS-URL freigegeben und die Anfrage muss mit einem Geheimnis authentifiziert werden
Ausführung
Es gibt 3 Optionen:
Ein yaml/json, das die auszuführenden Befehle spezifiziert. Normalerweise:
/cloudbuild.yaml
Nur einer, der "inline" im Web-Portal und in der Befehlszeile spezifiziert werden kann
Gängigste Option
Relevant für nicht authentifizierten Zugriff
Ein Dockerfile zum Erstellen
Ein Buildpack zum Erstellen
SA-Berechtigungen
Der Service Account hat den cloud-platform
-Bereich, sodass er alle Berechtigungen verwenden kann. Wenn kein SA angegeben ist (wie beim Ausführen von submit), wird der Standard-SA <proj-number>@cloudbuild.gserviceaccount.com
verwendet.
Standardmäßig werden keine Berechtigungen erteilt, aber es ist recht einfach, einige zu erteilen:
Genehmigungen
Es ist möglich, einen Cloud Build so zu konfigurieren, dass Genehmigungen für Build-Ausführungen erforderlich sind (standardmäßig deaktiviert).
PR-Genehmigungen
Wenn der Trigger ein PR ist, weil jeder PRs zu öffentlichen Repositories durchführen kann, wäre es sehr gefährlich, die Ausführung des Triggers einfach mit jedem PR zuzulassen. Daher wird die Ausführung standardmäßig nur automatisch für Besitzer und Mitarbeiter durchgeführt, und um den Trigger mit PRs anderer Benutzer auszuführen, muss ein Besitzer oder Mitarbeiter den Befehl /gcbrun
kommentieren.
Verbindungen & Repositories
Verbindungen können über erstellt werden:
GitHub: Es wird eine OAuth-Aufforderung angezeigt, die um Berechtigungen bittet, um einen Github-Token zu erhalten, der im Secret Manager gespeichert wird.
GitHub Enterprise: Es wird gefragt, ob ein GithubApp installiert werden soll. Ein Authentifizierungstoken von Ihrem GitHub Enterprise-Host wird erstellt und in diesem Projekt als Secret Manager-Geheimnis gespeichert.
GitLab / Enterprise: Sie müssen den API-Zugriffstoken und den Lese-API-Zugriffstoken bereitstellen, die im Secret Manager gespeichert werden.
Sobald eine Verbindung hergestellt ist, können Sie sie verwenden, um Repositories zu verknüpfen, auf die das Github-Konto Zugriff hat.
Diese Option ist über die Schaltfläche verfügbar:
Beachten Sie, dass mit dieser Methode verbundene Repositories nur in Triggern der 2. Generation verfügbar sind.
Repository verknüpfen
Dies ist nicht dasselbe wie eine Verbindung
. Dies ermöglicht unterschiedliche Möglichkeiten, auf ein Github- oder Bitbucket-Repository zuzugreifen, erstellt jedoch kein Verbindungsobjekt, sondern ein Repository-Objekt (der 1. Generation).
Diese Option ist über die Schaltfläche verfügbar:
Speicher
Manchmal wird Cloud Build einen neuen Speicherplatz generieren, um die Dateien für den Trigger zu speichern. Dies geschieht beispielsweise im Beispiel, das GCP anbietet mit:
Ein Speicherbucket namens security-devbox_cloudbuild wird erstellt, um eine .tgz
-Datei mit den zu verwendenden Dateien zu speichern.
Shell erhalten
Installiere gcloud innerhalb des Cloud Build:
Enumeration
Sie könnten sensible Informationen in Build-Konfigurationen und Protokollen finden.
Privilege Escalation
pageGCP - Cloudbuild PrivescUnauthenticated Access
pageGCP - Cloud Build Unauthenticated EnumPost Exploitation
pageGCP - Cloud Build Post ExploitationLast updated