GCP - Sourcerepos Privesc
Source Repositories
Per maggiori informazioni sui Source Repositories controlla:
GCP - Source Repositories Enumsource.repos.get
source.repos.get
Con questo permesso è possibile scaricare il repository localmente:
source.repos.update
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
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 PrivescAggiungere 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:
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
source.repos.updateProjectConfig
Con questo permesso è possibile disabilitare la protezione predefinita dei Source Repositories per non caricare codice contenente Private Keys:
Puoi anche configurare un diverso argomento pub/sub o persino disabilitarlo completamente:
Last updated