GCP - Sourcerepos Privesc

Supporta HackTricks

Source Repositories

Per maggiori informazioni sui Source Repositories controlla:

GCP - Source Repositories Enum

source.repos.get

Con questo permesso è possibile scaricare il repository localmente:

gcloud source repos clone <repo-name> --project=<project-uniq-name>

source.repos.update

Un principal con questo permesso sarà in grado di scrivere codice all'interno di un repository clonato con gcloud source repos clone <repo>. Ma nota che questo permesso non può essere assegnato a ruoli personalizzati, quindi deve essere dato tramite un ruolo predefinito come:

  • Owner

  • Editor

  • Source Repository Administrator (roles/source.admin)

  • Source Repository Writer (roles/source.writer)

Per scrivere basta eseguire un normale git push.

source.repos.setIamPolicy

Con questo permesso un attaccante potrebbe concedersi i permessi precedenti.

Accesso ai segreti

Se l'attaccante ha accesso ai segreti dove sono memorizzati i token, sarà in grado di rubarli. Per maggiori informazioni su come accedere a un segreto, controlla:

GCP - Secretmanager Privesc

Aggiungere chiavi SSH

È possibile aggiungere chiavi ssh al progetto Source Repository nella console web. Fa una richiesta post a /v1/sshKeys:add e può essere configurato in https://source.cloud.google.com/user/ssh_keys

Una volta impostata la tua chiave ssh, puoi accedere a un repo con:

git clone ssh://username@domain.com@source.developers.google.com:2022/p/<proj-name>/r/<repo-name>

E poi usa i comandi git come di consueto.

Credenziali Manuali

È possibile creare credenziali manuali per accedere ai Source Repositories:

Cliccando sul primo link verrai indirizzato a https://source.developers.google.com/auth/start?scopes=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform&state&authuser=3

Il quale ti presenterà un prompt di autorizzazione Oauth per dare accesso a Google Cloud Development. Quindi avrai bisogno delle credenziali dell'utente o di una sessione aperta nel browser per questo.

Questo ti porterà a una pagina con uno script bash da eseguire e configurare un cookie git in $HOME/.gitcookies

Eseguendo lo script puoi poi usare git clone, push... e funzionerà.

source.repos.updateProjectConfig

Con questo permesso è possibile disabilitare la protezione predefinita dei Source Repositories per non caricare codice contenente Private Keys:

gcloud source project-configs update --disable-pushblock

Puoi anche configurare un diverso argomento pub/sub o persino disabilitarlo completamente:

gcloud source project-configs update --remove-topic=REMOVE_TOPIC
gcloud source project-configs update --remove-topic=UPDATE_TOPIC
Supporta HackTricks

Last updated