GCP - Sourcerepos Privesc

Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Unterstütze HackTricks

Source Repositories

Für weitere Informationen über Source Repositories siehe:

GCP - Source Repositories Enum

source.repos.get

Mit dieser Berechtigung ist es möglich, das Repository lokal herunterzuladen:

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

source.repos.update

Ein Principal mit dieser Berechtigung wird in der Lage sein, Code in ein mit gcloud source repos clone <repo> geklontes Repository zu schreiben. Beachten Sie jedoch, dass diese Berechtigung nicht an benutzerdefinierte Rollen angehängt werden kann, sondern über eine vordefinierte Rolle wie:

  • Owner

  • Editor

  • Source Repository Administrator (roles/source.admin)

  • Source Repository Writer (roles/source.writer)

Um zu schreiben, führen Sie einfach einen regulären git push aus.

source.repos.setIamPolicy

Mit dieser Berechtigung könnte ein Angreifer sich selbst die vorherigen Berechtigungen gewähren.

Secret access

Wenn der Angreifer Zugriff auf die Secrets hat, in denen die Tokens gespeichert sind, wird er in der Lage sein, diese zu stehlen. Weitere Informationen darüber, wie man auf ein Secret zugreift, finden Sie unter:

GCP - Secretmanager Privesc

SSH-Schlüssel hinzufügen

Es ist möglich, SSH-Schlüssel zum Source Repository-Projekt in der Webkonsole hinzuzufügen. Es wird eine Post-Anfrage an /v1/sshKeys:add gesendet und kann unter https://source.cloud.google.com/user/ssh_keys konfiguriert werden.

Sobald Ihr SSH-Schlüssel gesetzt ist, können Sie auf ein Repository zugreifen mit:

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

Und dann verwenden Sie git-Befehle wie gewohnt.

Manuelle Anmeldeinformationen

Es ist möglich, manuelle Anmeldeinformationen zu erstellen, um auf die Source Repositories zuzugreifen:

Wenn Sie auf den ersten Link klicken, werden Sie zu https://source.developers.google.com/auth/start?scopes=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform&state&authuser=3 weitergeleitet.

Dies wird eine Oauth-Autorisierungsaufforderung anzeigen, um Zugriff auf Google Cloud Development zu gewähren. Sie benötigen also entweder die Anmeldeinformationen des Benutzers oder eine offene Sitzung im Browser dafür.

Dies führt Sie zu einer Seite mit einem bash-Skript zur Ausführung und konfiguriert ein git-Cookie in $HOME/.gitcookies

Nach der Ausführung des Skripts können Sie dann git clone, push... verwenden und es wird funktionieren.

source.repos.updateProjectConfig

Mit dieser Berechtigung ist es möglich, den standardmäßigen Schutz der Source Repositories zu deaktivieren, um keinen Code hochzuladen, der Private Keys enthält:

gcloud source project-configs update --disable-pushblock

Du kannst auch ein anderes pub/sub-Thema konfigurieren oder es sogar komplett deaktivieren:

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

Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Unterstütze HackTricks

Last updated