GCP - Persistencija tokena
Tip
Učite i vežbajte AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Tokeni autentifikovanih korisnika
Da biste dobili trenutni token korisnika, možete pokrenuti:
Preuzmi access token iz SQLite baze podataka
```bash sqlite3 $HOME/.config/gcloud/access_tokens.db "select access_token from access_tokens where account_id='Pogledajte na ovoj stranici kako da direktno koristite ovaj token pomoću gcloud:
Da biste dobili detalje za generisanje novog access tokena, pokrenite:
Get refresh token from SQLite database
```bash sqlite3 $HOME/.config/gcloud/credentials.db "select value from credentials where account_id='Takođe je moguće pronaći refresh tokens u $HOME/.config/gcloud/application_default_credentials.json i u $HOME/.config/gcloud/legacy_credentials/*/adc.json.
Da biste dobili novi access token pomoću refresh token, client ID i client secret pokrenite:
Dobijte novi access token koristeći refresh token
```bash curl -s --data client_id=Važenje refresh tokena može se upravljati u Admin > Security > Google Cloud session control, a po defaultu je postavljeno na 16h, i može se podesiti da nikada ne ističe:
.png)
Tok autentifikacije
Tok autentifikacije pri korišćenju nečeg poput gcloud auth login otvara prompt u pregledaču, i nakon prihvatanja svih scopes pregledač će poslati zahtev poput ovog na http port koji otvori alat:
/?state=EN5AK1GxwrEKgKog9ANBm0qDwWByYO&code=4/0AeaYSHCllDzZCAt2IlNWjMHqr4XKOuNuhOL-TM541gv-F6WOUsbwXiUgMYvo4Fg0NGzV9A&scope=email%20openid%20https://www.googleapis.com/auth/userinfo.email%20https://www.googleapis.com/auth/cloud-platform%20https://www.googleapis.com/auth/appengine.admin%20https://www.googleapis.com/auth/sqlservice.login%20https://www.googleapis.com/auth/compute%20https://www.googleapis.com/auth/accounts.reauth&authuser=0&prompt=consent HTTP/1.1
Zatim, gcloud će iskoristiti state i code sa nekim hardkodiranim client_id (32555940559.apps.googleusercontent.com) i client_secret (ZmssLNjJy2998hD4CTg2ejr2) da dobije final refresh token data.
Caution
Imajte na umu da je komunikacija sa localhost preko HTTP-a, tako da je moguće presresti podatke i dobiti refresh token; međutim, ti podaci važe samo jednom, pa bi to bilo beskorisno — lakše je pročitati refresh token iz fajla.
OAuth dozvole
Sve Google dozvole možete pronaći na https://developers.google.com/identity/protocols/oauth2/scopes ili ih dobiti izvršavanjem:
Dobijte sve Google OAuth dozvole
```bash curl "https://developers.google.com/identity/protocols/oauth2/scopes" | grep -oE 'https://www.googleapis.com/auth/[a-zA-A/\-\._]*' | sort -u ```Moguće je videti koje scope-ove aplikacija koju gcloud koristi za autentifikaciju može podržati pomoću ovog skripta:
Proveri podržane scope-ove za gcloud
```bash curl "https://developers.google.com/identity/protocols/oauth2/scopes" | grep -oE 'https://www.googleapis.com/auth/[a-zA-Z/\._\-]*' | sort -u | while read -r scope; do echo -ne "Testing $scope \r" if ! curl -v "https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=32555940559.apps.googleusercontent.com&redirect_uri=http%3A%2F%2Flocalhost%3A8085%2F&scope=openid+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fappengine.admin+$scope+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fsqlservice.login+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcompute+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Faccounts.reauth&state=AjvFqBW5XNIw3VADagy5pvUSPraLQu&access_type=offline&code_challenge=IOk5F08WLn5xYPGRAHP9CTGHbLFDUElsP551ni2leN4&code_challenge_method=S256" 2>&1 | grep -q "error"; then echo "" echo $scope fi done ```Nakon izvršenja, provereno je da ova aplikacija podržava sledeće scopes:
https://www.googleapis.com/auth/appengine.admin
https://www.googleapis.com/auth/bigquery
https://www.googleapis.com/auth/cloud-platform
https://www.googleapis.com/auth/compute
https://www.googleapis.com/auth/devstorage.full_control
https://www.googleapis.com/auth/drive
https://www.googleapis.com/auth/userinfo.email
Zanimljivo je videti kako ova aplikacija podržava drive scope, što bi moglo omogućiti eskalaciju sa GCP na Workspace ako napadač uspe da natera korisnika da generiše token sa ovim scope-om.
Pogledaj kako da abuse this here.
Service Accounts
Poput autentifikovanih korisnika, ako uspeš da kompromituješ datoteku privatnog ključa servisnog naloga bićeš u mogućnosti da mu pristupaš obično onoliko dugo koliko želiš.
Međutim, ako ukradeš OAuth token servisnog naloga, to može biti još interesantnije, zato što, iako su po defaultu ovi tokeni korisni samo oko sat vremena, ako žrtva obriše privatni api ključ, OAuth token će i dalje biti važeći dok ne istekne.
Metadata
Očigledno, sve dok si unutar mašine koja radi u GCP okruženju moći ćeš da pristupiš servisnom nalogu prikačenom za tu mašinu kontaktirajući metadata endpoint (imaj na umu da su OAuth tokens koje možeš dobiti preko ovog endpointa obično ograničeni scope-ovima).
Remediations
Neka rešenja za ove tehnike su objašnjena u https://www.netskope.com/blog/gcp-oauth-token-hijacking-in-google-cloud-part-2
References
- https://www.netskope.com/blog/gcp-oauth-token-hijacking-in-google-cloud-part-1
- https://www.netskope.com/blog/gcp-oauth-token-hijacking-in-google-cloud-part-2
Tip
Učite i vežbajte AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
HackTricks Cloud

