mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-02-04 19:11:41 -08:00
Translated ['src/pentesting-cloud/gcp-security/gcp-to-workspace-pivoting
This commit is contained in:
@@ -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"`**
|
||||
|
||||
|
||||
@@ -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`
|
||||
|
||||
Reference in New Issue
Block a user