GCP - Cloud Build Enum
Informazioni di Base
Google Cloud Build è una piattaforma CI/CD gestita che automatizza la compilazione del software e i processi di rilascio, integrandosi con i repository di codice sorgente e supportando una vasta gamma di linguaggi di programmazione. Consente agli sviluppatori di compilare, testare e distribuire automaticamente il codice fornendo flessibilità per personalizzare i passaggi di compilazione e i flussi di lavoro.
Ogni Trigger di Cloud Build è collegato a un Cloud Repository o direttamente con un repository esterno (Github, Bitbucket e Gitlab).
Non ho visto alcun modo per rubare il token di Github/Bitbucket da qui o dai Cloud Repositories perché quando il repository viene scaricato viene accesso tramite un URL https://source.cloud.google.com/ e Github non è accessibile dal client.
Eventi
Il Cloud Build può essere attivato se:
Push su un branch: Specificare il branch
Push di un nuovo tag: Specificare il tag
Pull request: Specificare il branch che riceve la PR
Invocazione manuale
Messaggio Pub/Sub: Specificare l'argomento
Evento Webhook: Esporrà un URL HTTPS e la richiesta deve essere autenticata con un segreto
Esecuzione
Ci sono 3 opzioni:
Un yaml/json specificando i comandi da eseguire. Di solito:
/cloudbuild.yaml
Solo uno che può essere specificato "in linea" nella console web e nella cli
Opzione più comune
Rilevante per l'accesso non autenticato
Un Dockerfile da compilare
Un Buildpack da compilare
Autorizzazioni SA
Il Service Account ha lo scope cloud-platform
, quindi può utilizzare tutti i privilegi. Se nessun SA è specificato (come quando si esegue la submit) verrà utilizzato il SA predefinito <proj-number>@cloudbuild.gserviceaccount.com
.
Di default non vengono date autorizzazioni ma è abbastanza facile darne alcune:
Approvazioni
È possibile configurare un Cloud Build per richiedere approvazioni per le esecuzioni della build (disabilitato per impostazione predefinita).
Approvazioni PR
Quando il trigger è una PR perché chiunque può effettuare PR su repository pubblici sarebbe molto pericoloso permettere l'esecuzione del trigger con qualsiasi PR. Pertanto, per impostazione predefinita, l'esecuzione sarà automatica solo per proprietari e collaboratori e, per eseguire il trigger con le PR di altri utenti, un proprietario o collaboratore deve commentare /gcbrun
.
Connessioni e Repository
Le connessioni possono essere create su:
GitHub: Visualizzerà un prompt OAuth che chiede le autorizzazioni per ottenere un token Github che verrà memorizzato all'interno del Secret Manager.
GitHub Enterprise: Chiederà di installare un GithubApp. Verrà creato e memorizzato in questo progetto un token di autenticazione dal tuo host GitHub Enterprise come segreto del Secret Manager.
GitLab / Enterprise: È necessario fornire il token di accesso API e il token di accesso API di lettura che verranno memorizzati nel Secret Manager.
Una volta generata una connessione, è possibile utilizzarla per collegare i repository a cui l'account Github ha accesso.
Questa opzione è disponibile tramite il pulsante:
Nota che i repository collegati con questo metodo sono disponibili solo nei Triggers che utilizzano la 2a generazione.
Collega un Repository
Questo non è lo stesso di una connessione
. Questo consente diversi modi per ottenere accesso a un repository Github o Bitbucket ma non genera un oggetto di connessione, ma genera un oggetto repository (di 1a generazione).
Questa opzione è disponibile tramite il pulsante:
Archiviazione
A volte Cloud Build genererà un nuovo archivio per memorizzare i file per il trigger. Questo accade ad esempio nell'esempio che GCP offre con:
Un bucket di archiviazione chiamato security-devbox_cloudbuild è stato creato per memorizzare un file .tgz
con i file da utilizzare.
Ottieni shell
Installa gcloud all'interno di Cloud Build:
Enumerazione
Potresti trovare informazioni sensibili nelle configurazioni di build e nei log.
Escalazione dei privilegi
pageGCP - Cloudbuild PrivescAccesso non autenticato
pageGCP - Cloud Build Unauthenticated EnumPost Esploitation
pageGCP - Cloud Build Post ExploitationLast updated