Translated ['src/pentesting-cloud/gcp-security/gcp-to-workspace-pivoting

This commit is contained in:
Translator
2025-02-26 00:22:03 +00:00
parent 1e279876ec
commit 1d82475864
2 changed files with 19 additions and 19 deletions

View File

@@ -6,7 +6,7 @@
### **Osnovi delegacije na nivou domena**
Delegacija na nivou domena Google Workspace omogućava identitetskom objektu, bilo **spoljašnjoj aplikaciji** iz Google Workspace Marketplace-a ili unutrašnjem **GCP servisnom nalogu**, da **pristupi podacima širom Workspace-a u ime korisnika**.
Delegacija na nivou domena Google Workspace-a omogućava identitetskom objektu, bilo **spoljnoj aplikaciji** iz Google Workspace Marketplace-a ili unutrašnjem **GCP servisnom nalogu**, da **pristupi podacima širom Workspace-a u ime korisnika**.
> [!NOTE]
> To u suštini znači da **servisni nalozi** unutar GCP projekata organizacije mogu biti u mogućnosti da **imituju korisnike Workspace-a** iste organizacije (ili čak iz druge).
@@ -51,7 +51,7 @@ Ovaj korisnik može biti definisan u DeleFriend-ovom _config.yaml_ fajlu. Ako ci
#### [Gitlab's Python script](https://gitlab.com/gitlab-com/gl-security/threatmanagement/redteam/redteam-public/gcp_misc/-/blob/master/gcp_delegation.py)
Gitlab je kreirao [ovaj Python skript](https://gitlab.com/gitlab-com/gl-security/gl-redteam/gcp_misc/blob/master/gcp_delegation.py) koji može uraditi dve stvari - nabrojati korisnički direktorijum i kreirati novi administratorski nalog dok ukazuje na json sa SA kredencijalima i korisnikom kojeg treba imitirati. Evo kako biste ga koristili:
Gitlab je kreirao [ovaj Python skript](https://gitlab.com/gitlab-com/gl-security/gl-redteam/gcp_misc/blob/master/gcp_delegation.py) koji može uraditi dve stvari - listati korisnički direktorijum i kreirati novi administratorski nalog dok ukazuje na json sa SA kredencijalima i korisnikom kojeg treba imitirati. Evo kako biste ga koristili:
```bash
# Install requirements
pip install --upgrade --user oauth2client
@@ -79,17 +79,17 @@ Moguće je **proveriti delegacije na nivou domena u** [**https://admin.google.co
Napadač sa sposobnošću da **kreira servisne naloge u GCP projektu** i **super admin privilegijom za GWS može kreirati novu delegaciju koja omogućava SA da se predstavljaju kao neki GWS korisnici:**
1. **Generisanje novog servisnog naloga i odgovarajućeg para ključeva:** Na GCP-u, novi resursi servisnog naloga mogu se proizvoditi ili interaktivno putem konzole ili programatski koristeći direktne API pozive i CLI alate. To zahteva **ulogu `iam.serviceAccountAdmin`** ili bilo koju prilagođenu ulogu opremljenu sa **`iam.serviceAccounts.create`** **dozvolom**. Kada se servisni nalog kreira, nastavićemo sa generisanjem **odgovarajućeg para ključeva** (**`iam.serviceAccountKeys.create`** dozvola).
1. **Generisanje novog servisnog naloga i odgovarajućeg para ključeva:** Na GCP-u, novi resursi servisnog naloga mogu se proizvoditi ili interaktivno putem konzole ili programatski koristeći direktne API pozive i CLI alate. Ovo zahteva **ulogu `iam.serviceAccountAdmin`** ili bilo koju prilagođenu ulogu opremljenu sa **`iam.serviceAccounts.create`** **dozvolom**. Kada se servisni nalog kreira, nastavićemo sa generisanjem **odgovarajućeg para ključeva** (**`iam.serviceAccountKeys.create`** dozvola).
2. **Kreiranje nove delegacije**: Važno je razumeti da **samo Super Admin uloga ima sposobnost da postavi globalnu delegaciju na nivou domena u Google Workspace** i delegacija na nivou domena **ne može biti postavljena programatski,** može se samo kreirati i prilagoditi **ručno** putem Google Workspace **konzole**.
- Kreiranje pravila može se naći na stranici **API controls → Manage Domain-Wide delegation in Google Workspace Admin console**.
3. **Priključivanje privilegije OAuth opsega**: Kada se konfiguriše nova delegacija, Google zahteva samo 2 parametra, Client ID, koji je **OAuth ID resursa GCP Servisnog Naloga**, i **OAuth opsege** koje definišu koje API pozive delegacija zahteva.
3. **Priključivanje privilegije OAuth opsega**: Kada se konfiguriše nova delegacija, Google zahteva samo 2 parametra, Client ID, koji je **OAuth ID resursa GCP Servisnog naloga**, i **OAuth opsege** koji definišu koje API pozive delegacija zahteva.
- **Puna lista OAuth opsega** može se naći [**ovde**](https://developers.google.com/identity/protocols/oauth2/scopes), ali evo preporuke: `https://www.googleapis.com/auth/userinfo.email, https://www.googleapis.com/auth/cloud-platform, https://www.googleapis.com/auth/admin.directory.group, https://www.googleapis.com/auth/admin.directory.user, https://www.googleapis.com/auth/admin.directory.domain, https://mail.google.com/, https://www.googleapis.com/auth/drive, openid`
4. **Delovanje u ime ciljne identiteta:** U ovom trenutku, imamo funkcionalni delegirani objekat u GWS. Sada, **koristeći privatni ključ GCP Servisnog Naloga, možemo izvršavati API pozive** (u opsegu definisanom u parametru OAuth opsega) da ga aktiviramo i **delujemo u ime bilo kojeg identiteta koji postoji u Google Workspace**. Kao što smo naučili, servisni nalog će generisati pristupne tokene prema svojim potrebama i u skladu sa dozvolama koje ima za REST API aplikacije.
4. **Delovanje u ime ciljne identiteta:** U ovom trenutku, imamo funkcionalni delegirani objekat u GWS. Sada, **koristeći privatni ključ GCP Servisnog naloga, možemo izvršiti API pozive** (u opsegu definisanom u parametru OAuth opsega) da ga aktiviramo i **delujemo u ime bilo kog identiteta koji postoji u Google Workspace**. Kao što smo naučili, servisni nalog će generisati pristupne tokene prema svojim potrebama i u skladu sa dozvolama koje ima za REST API aplikacije.
- Proverite **prethodni odeljak** za neke **alate** za korišćenje ove delegacije.
#### Cross-Organizational delegacija
OAuth SA ID je globalan i može se koristiti za **cross-organizational delegaciju**. Nije implementirana nijedna restrikcija koja bi sprečila cross-global delegaciju. U jednostavnim terminima, **servisni nalozi iz različitih GCP organizacija mogu se koristiti za konfiguraciju delegacije na nivou domena u drugim Workspace organizacijama**. To bi rezultiralo **samo potrebom za Super Admin pristupom Workspace-u**, a ne pristupom istom GCP nalogu, jer protivnik može kreirati Servisne Naloge i privatne ključeve na svom lično kontrolisanom GCP nalogu.
OAuth SA ID je globalan i može se koristiti za **cross-organizational delegaciju**. Nije implementirana nijedna restrikcija koja bi sprečila cross-global delegaciju. U jednostavnim terminima, **servisni nalozi iz različitih GCP organizacija mogu se koristiti za konfiguraciju delegacije na nivou domena u drugim Workspace organizacijama**. To bi značilo da je **potrebna samo Super Admin pristup Workspace-u**, a ne pristup istom GCP nalogu, jer protivnik može kreirati Servisne Naloge i privatne ključeve na svom lično kontrolisanom GCP nalogu.
### Kreiranje projekta za enumeraciju Workspace-a
@@ -122,12 +122,12 @@ Proverite **više enumeracije u**:
../gcp-services/gcp-iam-and-org-policies-enum.md
{{#endref}}
### Zloupotreba Gcloud akreditiva
### Zloupotreba Gcloud kredencijala
Možete pronaći dodatne informacije o `gcloud` toku za prijavu u:
{{#ref}}
../gcp-persistence/gcp-non-svc-persistance.md
../gcp-persistence/gcp-non-svc-persistence.md
{{#endref}}
Kao što je objašnjeno tamo, gcloud može zatražiti opseg **`https://www.googleapis.com/auth/drive`** koji bi omogućio korisniku pristup disku korisnika.\
@@ -140,7 +140,7 @@ Ako napadač kompromituje računar korisnika, mogao bi takođe da izmeni datotek
<figure><img src="../../../images/image (342).png" alt="" width="563"><figcaption></figcaption></figure>
> [!WARNING]
> Stoga, sledeći put kada se korisnik prijavi, kreiraće **token sa pristupom drive-u** koji bi napadač mogao da zloupotrebi za pristup drive-u. Očigledno, pretraživač će pokazati da generisani token ima pristup drive-u, ali pošto će se korisnik sam prijaviti koristeći **`gcloud auth login`**, verovatno **neće posumnjati u ništa.**
> Stoga, sledeći put kada se korisnik prijavi, kreiraće **token sa pristupom drive-u** koji bi napadač mogao da zloupotrebi za pristup drive-u. Očigledno, pretraživač će ukazati da generisani token ima pristup drive-u, ali pošto će se korisnik sam prijaviti koristeći **`gcloud auth login`**, verovatno **neće posumnjati u ništa.**
>
> Da biste nabrojali datoteke na drive-u: **`curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://www.googleapis.com/drive/v3/files"`**

View File

@@ -23,7 +23,7 @@ Možda ćete moći da **započnete chat** sa osobom samo imajući njihovu email
<figure><img src="../../../images/image (6).png" alt=""><figcaption></figcaption></figure>
> [!TIP]
> **Međutim, u mom testiranju pozvani članovi nisu ni primili pozivnicu.**
> **Međutim, u mom testiranju pozvani članovi nisu čak ni primili pozivnicu.**
Možete proveriti kako je to funkcionisalo u prošlosti na: [https://www.youtube.com/watch?v=KTVHLolz6cE\&t=904s](https://www.youtube.com/watch?v=KTVHLolz6cE&t=904s)
@@ -41,7 +41,7 @@ Danas, to ne funkcioniše, ali ako **dajte žrtvi pristup dokumentu** Google će
Možete **kreirati kalendarski događaj** i dodati koliko god email adresa kompanije koju napadate imate. Zakazujte ovaj kalendarski događaj u **5 ili 15 minuta** od trenutnog vremena. Neka događaj izgleda legitimno i **stavite komentar i naslov koji ukazuje da treba da pročitaju nešto** (sa **phishing linkom**).
Ovo je upozorenje koje će se pojaviti u pretraživaču sa naslovom sastanka "Otpustiti ljude", tako da možete postaviti naslov koji više liči na phishing (i čak promeniti ime povezano sa vašom email adresom).
Ovo je upozorenje koje će se pojaviti u pretraživaču sa naslovom sastanka "Otpustanje ljudi", tako da možete postaviti naslov koji više liči na phishing (i čak promeniti ime povezano sa vašom email adresom).
<figure><img src="../../../images/image (8).png" alt=""><figcaption></figcaption></figure>
@@ -54,7 +54,7 @@ Da bi izgledalo manje sumnjivo:
## App Scripts Redirect Phishing
Moguće je kreirati skriptu na [https://script.google.com/](https://script.google.com/) i **izložiti je kao web aplikaciju dostupnu svima** koja će koristiti legitimnu domenu **`script.google.com`**.\
Sa nekim kodom poput sledećeg, napadač bi mogao da učini da skripta učita proizvoljan sadržaj na ovoj stranici bez prestanka pristupajući domeni:
Sa nekim kodom poput sledećeg, napadač bi mogao napraviti da skripta učita proizvoljan sadržaj na ovoj stranici bez prestanka pristupajući domeni:
```javascript
function doGet() {
return HtmlService.createHtmlOutput(
@@ -71,7 +71,7 @@ Na primer, pristupanjem [https://script.google.com/macros/s/AKfycbwuLlzo0PUaT63G
## App Scripts OAuth Phishing
Moguće je kreirati App Scripts povezane sa dokumentima kako bi se pokušao dobiti pristup žrtvinom OAuth tokenu, za više informacija pogledajte:
Moguće je kreirati App Scripts povezane sa dokumentima kako bi se pokušalo dobiti pristup žrtvinom OAuth tokenu, za više informacija pogledajte:
{{#ref}}
gws-app-scripts.md
@@ -89,7 +89,7 @@ Bilo koja od prethodnih tehnika može se koristiti da se korisnik natera da pris
Kada se kreira aplikacija da **deluje u ime drugih korisnika**, programer treba da kreira **OAuth aplikaciju unutar GCP** i da označi opsege (dozvole) koje aplikacija treba da pristupi podacima korisnika.\
Kada **korisnik** želi da **koristi** tu **aplikaciju**, biće **upitan** da **prihvati** da će aplikacija imati pristup njihovim podacima navedenim u opsezima.
Ovo je veoma primamljiv način da se **phish** ne-tehnički korisnici u korišćenju **aplikacija koje pristupaju osetljivim informacijama** jer možda ne razumeju posledice. Međutim, u organizacijama postoje načini da se to spreči.
Ovo je veoma primamljiv način da se **phish** netehnički korisnici u korišćenju **aplikacija koje pristupaju osetljivim informacijama** jer možda ne razumeju posledice. Međutim, u organizacijama postoje načini da se to spreči.
### Unverified App prompt
@@ -105,13 +105,13 @@ Ova poruka se pojavljuje u aplikacijama koje:
[**Ovde**](https://developers.google.com/identity/protocols/oauth2/scopes) možete pronaći listu svih Google OAuth opsega.
- **cloud-platform**: Pregledajte i upravljajte svojim podacima širom **Google Cloud Platform** servisa. Možete se pretvarati da ste korisnik u GCP.
- **admin.directory.user.readonly**: Vidite i preuzmite direktorijum vaše organizacije GSuite. Dobijte imena, telefone, URL-ove kalendara svih korisnika.
- **admin.directory.user.readonly**: Vidite i preuzmite direktorijum vaše organizacije GSuite. Dobijate imena, telefone, URL-ove kalendara svih korisnika.
### Create an OAuth App
**Počnite sa kreiranjem OAuth Client ID**
**Započnite kreiranje OAuth Client ID**
1. Idite na [https://console.cloud.google.com/apis/credentials/oauthclient](https://console.cloud.google.com/apis/credentials/oauthclient) i kliknite na konfigurišite ekran za pristanak.
1. Idite na [https://console.cloud.google.com/apis/credentials/oauthclient](https://console.cloud.google.com/apis/credentials/oauthclient) i kliknite na konfiguraciju ekrana za pristanak.
2. Zatim, bićete upitani da li je **tip korisnika** **interni** (samo za ljude u vašoj organizaciji) ili **spoljašnji**. Izaberite onaj koji odgovara vašim potrebama
- Interni može biti zanimljiv ako ste već kompromitovali korisnika organizacije i kreirate ovu aplikaciju da phishingujete drugog.
3. Dajte **ime** aplikaciji, **email za podršku** (imajte na umu da možete postaviti email googlegroup-a da biste pokušali da se malo više anonimno), **logo**, **ovlašćene domene** i drugi **email** za **ažuriranja**.
@@ -122,7 +122,7 @@ Ova poruka se pojavljuje u aplikacijama koje:
Sada da dobijemo **akreditiv za web aplikaciju** koristeći **prethodno kreirani OAuth Client ID**:
1. Vratite se na [https://console.cloud.google.com/apis/credentials/oauthclient](https://console.cloud.google.com/apis/credentials/oauthclient), ovoga puta će se pojaviti druga opcija.
1. Vratite se na [https://console.cloud.google.com/apis/credentials/oauthclient](https://console.cloud.google.com/apis/credentials/oauthclient), ovoga puta će se pojaviti drugačija opcija.
2. Izaberite da **kreirate akreditive za web aplikaciju**
3. Postavite potrebne **Javascript izvore** i **URI za preusmeravanje**
- Možete postaviti u oba nešto poput **`http://localhost:8000/callback`** za testiranje
@@ -142,7 +142,7 @@ Idite na **`http://localhost:8000`**, kliknite na dugme Prijavite se sa Google-o
Aplikacija će prikazati **access i refresh token** koji se mogu lako koristiti. Za više informacija o **kako koristiti ove tokene proverite**:
{{#ref}}
../../gcp-security/gcp-persistence/gcp-non-svc-persistance.md
../../gcp-security/gcp-persistence/gcp-non-svc-persistence.md
{{#endref}}
#### Korišćenje `glcoud`