GCP - Sourcerepos Privesc

Tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks

Source Repositories

Für weitere Informationen zu Source Repositories siehe:

GCP - Source Repositories Enum

source.repos.get

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

Clone source repository ```bash gcloud source repos clone --project= ```

source.repos.update

Ein Principal mit dieser Berechtigung wird in der Lage sein, Code in ein Repository zu schreiben, das mit gcloud source repos clone <repo> geklont wurde. Beachte jedoch, dass diese Berechtigung nicht an benutzerdefinierte Rollen angehängt werden kann, sie muss also über eine vordefinierte Rolle vergeben werden, z. B.:

  • Owner
  • Editor
  • Source Repository Administrator (roles/source.admin)
  • Source Repository Writer (roles/source.writer)

Um zu schreiben, führe einfach ein normales 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, kann er diese stehlen. Für mehr Infos darüber, wie man auf ein Secret zugreift, siehe:

GCP - Secretmanager Privesc

Add SSH keys

Es ist möglich, SSH-Keys zum Source Repository Projekt in der Web-Konsole hinzuzufügen. Dabei wird eine POST-Anfrage an /v1/sshKeys:add gesendet und das lässt sich unter https://source.cloud.google.com/user/ssh_keys konfigurieren

Sobald dein SSH-Key gesetzt ist, kannst du auf ein Repo zugreifen mit:

Repository mit SSH klonen ```bash git clone ssh://username@domain.com@source.developers.google.com:2022/p//r/ ```

Und dann verwendet man wie gewohnt die git-Befehle.

Manual Credentials

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

Ein Klick auf den ersten Link leitet dich zu https://source.developers.google.com/auth/start?scopes=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform&state&authuser=3

Das öffnet ein Oauth authorization prompt, um Zugriff auf Google Cloud Development zu gewähren. Dafür benötigst du entweder die Credentials des Benutzers oder eine offene Session im Browser.

Das führt dich zu einer Seite mit einem bash script to execute, das ein Git-Cookie in $HOME/.gitcookies konfiguriert.

Wenn du das Script ausführst, kannst du anschließend git clone, push … verwenden und es funktioniert.

source.repos.updateProjectConfig

Mit dieser Berechtigung ist es möglich, den Standard-Schutz von Source Repositories zu deaktivieren, der verhindert, dass Code mit enthaltenen Private Keys hochgeladen wird:

Disable pushblock and modify pub/sub configuration ```bash gcloud source project-configs update --disable-pushblock ``` Sie können auch ein anderes pub/sub-Topic konfigurieren oder es sogar vollständig deaktivieren: ```bash gcloud source project-configs update --remove-topic=REMOVE_TOPIC gcloud source project-configs update --remove-topic=UPDATE_TOPIC ```

Tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks