GCP - Sourcerepos Privesc

Tip

Ucz się & ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Wspieraj HackTricks

Source Repositories

Aby uzyskać więcej informacji o Source Repositories sprawdź:

GCP - Source Repositories Enum

source.repos.get

Z tym uprawnieniem możliwe jest pobranie repozytorium lokalnie:

Sklonuj repozytorium ```bash gcloud source repos clone --project= ```

source.repos.update

Podmiot z tym uprawnieniem będzie w stanie zapisywać kod w repozytorium sklonowanym za pomocą gcloud source repos clone <repo>. Należy jednak pamiętać, że tego uprawnienia nie można przypisać do ról niestandardowych, więc musi być nadane przez jedną z ról predefiniowanych, na przykład:

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

Aby zapisać zmiany, wystarczy wykonać zwykły git push.

source.repos.setIamPolicy

Z tym uprawnieniem atakujący mógłby nadać 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 o tym, jak uzyskać dostęp do sekretu, sprawdź:

GCP - Secretmanager Privesc

Dodawanie kluczy SSH

W konsoli webowej można dodać klucze SSH do projektu Source Repository. Wykonuje to żądanie POST do /v1/sshKeys:add i można to skonfigurować w https://source.cloud.google.com/user/ssh_keys

Gdy klucz SSH zostanie ustawiony, możesz uzyskać dostęp do repozytorium za pomocą:

Klonowanie repozytorium przez SSH ```bash git clone ssh://username@domain.com@source.developers.google.com:2022/p//r/ ```

A następnie można używać poleceń git jak zwykle.

Ręczne poświadczenia

Możliwe jest utworzenie ręcznych poświadczeń, aby uzyskać dostęp do Source Repositories:

Kliknięcie pierwszego linku przekieruje cię 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 Oauth authorization prompt z prośbą o udzielenie dostępu do Google Cloud Development. Potrzebne będą więc albo poświadczenia użytkownika, albo otwarta sesja w przeglądarce.

Spowoduje to przejście do strony ze skryptem bash do wykonania i konfiguracją cookie git w $HOME/.gitcookies

Po uruchomieniu skryptu będziesz mógł używać git clone, push… i to zadziała.

source.repos.updateProjectConfig

Dzięki temu uprawnieniu można wyłączyć domyślną ochronę Source Repositories, która uniemożliwia przesyłanie kodu zawierającego klucze prywatne:

Wyłączenie pushblock i modyfikacja konfiguracji pub/sub ```bash gcloud source project-configs update --disable-pushblock ``` Możesz także skonfigurować inny pub/sub topic lub nawet całkowicie go wyłączyć: ```bash gcloud source project-configs update --remove-topic=REMOVE_TOPIC gcloud source project-configs update --remove-topic=UPDATE_TOPIC ```

Tip

Ucz się & ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Wspieraj HackTricks