# GCP - Sourcerepos Privesc

{{#include ../../../banners/hacktricks-training.md}}

## Izvori Repozitorijumi

Za više informacija o Izvorima Repozitorijuma pogledajte:

{{#ref}}
../gcp-services/gcp-source-repositories-enum.md
{{#endref}}

### `source.repos.get`

Sa ovom dozvolom je moguće preuzeti repozitorijum lokalno:
```bash
gcloud source repos clone <repo-name> --project=<project-uniq-name>
```
### `source.repos.update`

Princip sa ovom dozvolom **će moći da piše kod unutar repozitorijuma kloniranog sa `gcloud source repos clone <repo>`**. Ali imajte na umu da se ova dozvola ne može prikačiti na prilagođene uloge, tako da mora biti dodeljena putem unapred definisane uloge kao što su:

- Vlasnik
- Urednik
- Administrator repozitorijuma izvora (`roles/source.admin`)
- Pisac repozitorijuma izvora (`roles/source.writer`)

Da biste pisali, jednostavno izvršite običan **`git push`**.

### `source.repos.setIamPolicy`

Sa ovom dozvolom napadač bi mogao da dodeli sebi prethodne dozvole.

### Pristup tajnama

Ako napadač ima **pristup tajnama** gde su tokeni pohranjeni, moći će da ih ukrade. Za više informacija o tome kako pristupiti tajni, proverite:

{{#ref}}
gcp-secretmanager-privesc.md
{{#endref}}

### Dodavanje SSH ključeva

Moguće je **dodati ssh ključeve u projekat Source Repository** u veb konzoli. To šalje POST zahtev na **`/v1/sshKeys:add`** i može se konfigurisati na [https://source.cloud.google.com/user/ssh_keys](https://source.cloud.google.com/user/ssh_keys)

Kada je vaš ssh ključ postavljen, možete pristupiti repozitorijumu sa:
```bash
git clone ssh://username@domain.com@source.developers.google.com:2022/p/<proj-name>/r/<repo-name>
```
I zatim koristite **`git`** komande kao i obično.

### Ručne Kredencijale

Moguće je kreirati ručne kredencijale za pristup Source Repositories:

<figure><img src="../../../images/image (324).png" alt=""><figcaption></figcaption></figure>

Klikom na prvu vezu bićete preusmereni na [https://source.developers.google.com/auth/start?scopes=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform\&state\&authuser=3](https://source.developers.google.com/auth/start?scopes=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform&state&authuser=3)

Što će prikazati **Oauth autorizacijski prozor** za davanje pristupa **Google Cloud Development**. Tako da će vam biti potrebni ili **kredencijali korisnika** ili **otvorena sesija u pretraživaču** za ovo.

Ovo će vas odvesti na stranicu sa **bash skriptom za izvršavanje** i konfiguraciju git kolačića u **`$HOME/.gitcookies`**

<figure><img src="../../../images/image (323).png" alt=""><figcaption></figcaption></figure>

Izvršavanjem skripte možete koristiti git clone, push... i to će raditi.

### `source.repos.updateProjectConfig`

Sa ovom dozvolom moguće je onemogućiti podrazumevanu zaštitu Source Repositories da ne učitava kod koji sadrži privatne ključeve:
```bash
gcloud source project-configs update --disable-pushblock
```
Možete takođe konfigurisati drugačiju pub/sub temu ili čak potpuno onemogućiti:
```bash
gcloud source project-configs update --remove-topic=REMOVE_TOPIC
gcloud source project-configs update --remove-topic=UPDATE_TOPIC
```
{{#include ../../../banners/hacktricks-training.md}}
