GCP - Sourcerepos Privesc

Support HackTricks

Repozytoria źródłowe

Aby uzyskać więcej informacji na temat repozytoriów źródłowych, sprawdź:

GCP - Source Repositories Enum

source.repos.get

Dzięki temu uprawnieniu możliwe jest pobranie repozytorium lokalnie:

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

source.repos.update

Osoba z tym uprawnieniem będzie mogła pisać kod w repozytorium sklonowanym za pomocą gcloud source repos clone <repo>. Należy jednak zauważyć, że to uprawnienie nie może być przypisane do niestandardowych ról, więc musi być nadane za pomocą roli zdefiniowanej, takiej jak:

  • Właściciel

  • Edytor

  • Administrator Repozytoriów Źródłowych (roles/source.admin)

  • Autor Repozytoriów Źródłowych (roles/source.writer)

Aby pisać, wystarczy wykonać standardowe git push.

source.repos.setIamPolicy

Dzięki temu uprawnieniu atakujący mógłby przyznać sobie poprzednie uprawnienia.

Dostęp do sekretów

Jeśli atakujący ma dostęp do sekretów, w których przechowywane są tokeny, będzie mógł je ukraść. Aby uzyskać więcej informacji na temat dostępu do sekretu, sprawdź:

GCP - Secretmanager Privesc

Dodaj klucze SSH

Możliwe jest dodanie kluczy ssh do projektu Repozytoriów Źródłowych w konsoli internetowej. Wysyła żądanie POST do /v1/sshKeys:add i można je skonfigurować w https://source.cloud.google.com/user/ssh_keys

Gdy twój klucz ssh jest ustawiony, możesz uzyskać dostęp do repozytorium za pomocą:

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

A następnie użyj poleceń git jak zwykle.

Ręczne poświadczenia

Możliwe jest utworzenie ręcznych poświadczeń do uzyskania dostępu do Repozytoriów Źródłowych:

Klikając na pierwszy link, zostaniesz przekierowany do https://source.developers.google.com/auth/start?scopes=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform&state&authuser=3

Co spowoduje wyświetlenie okna autoryzacji Oauth, aby uzyskać dostęp do Google Cloud Development. Będziesz potrzebować albo poświadczeń użytkownika, albo otwartej sesji w przeglądarce.

To przeniesie cię na stronę z skryptem bash do wykonania i skonfigurowania ciasteczka git w $HOME/.gitcookies

Wykonując skrypt, możesz następnie użyć git clone, push... i to zadziała.

source.repos.updateProjectConfig

Dzięki temu uprawnieniu możliwe jest wyłączenie domyślnej ochrony Repozytoriów Źródłowych, aby nie przesyłać kodu zawierającego Klucze Prywatne:

gcloud source project-configs update --disable-pushblock

Możesz również skonfigurować inny temat pub/sub lub nawet całkowicie go wyłączyć:

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

Last updated