GCP - Token-persistensie
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die đŹ Discord groep of die telegram groep of volg ons op Twitter đŠ @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
Geverifieerde gebruiker-tokens
Om die huidige token van ân gebruiker te kry, kan jy die volgende uitvoer:
Kry toegangstoken uit die SQLite-databasis
```bash sqlite3 $HOME/.config/gcloud/access_tokens.db "select access_token from access_tokens where account_id='Kyk op hierdie bladsy hoe om hierdie token direk met gcloud te gebruik:
Om die besonderhede te kry om generate a new access token, voer die volgende uit:
Kry refresh token uit die SQLite database
```bash sqlite3 $HOME/.config/gcloud/credentials.db "select value from credentials where account_id='Dit is ook moontlik om refresh tokens te vind in $HOME/.config/gcloud/application_default_credentials.json en in $HOME/.config/gcloud/legacy_credentials/*/adc.json.
Om ân nuwe access token te kry deur die refresh token, client ID en client secret te gebruik, voer uit:
Kry nuwe access token met behulp van refresh token
```bash curl -s --data client_id=Die geldigheid van refresh tokens kan bestuur word in Admin > Security > Google Cloud session control, en standaard is dit op 16h gestel alhoewel dit ingestel kan word om nooit te verval nie:
.png)
Outentiseringsvloei
Die outentiseringsvloei wanneer ân gebruiker iets soos gcloud auth login gebruik, sal ân prompt in die blaaier oopmaak en nadat alle scopes aanvaar is, sal die blaaier ân versoek soos die volgende na die http-poort wat deur die tool oopgemaak is, stuur:
/?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
Dan sal gcloud die state en code gebruik saam met ân paar hardgekodeerde client_id (32555940559.apps.googleusercontent.com) en client_secret (ZmssLNjJy2998hD4CTg2ejr2) om die finale refresh token-data te kry.
Caution
Let wel dat die kommunikasie met localhost oor HTTP plaasvind, so dit is moontlik om die data af te vang om ân refresh token te kry; egter is hierdie data net 1 keer geldig, dus sou dit nutteloos wees â dit is makliker om net die refresh token uit die lĂȘer te lees.
OAuth Toestemmings
Jy kan al die Google-scopes vind by https://developers.google.com/identity/protocols/oauth2/scopes of kry hulle deur dit uit te voer:
Haal alle Google OAuth-scopes
```bash curl "https://developers.google.com/identity/protocols/oauth2/scopes" | grep -oE 'https://www.googleapis.com/auth/[a-zA-A/\-\._]*' | sort -u ```Dit is moontlik om te sien watter scopes die toepassing wat gcloud gebruik om te verifieer, met hierdie skrip kan ondersteun:
Toets ondersteunde scopes vir 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 ```Na uitvoering daarvan is bevestig dat hierdie app die volgende scopes ondersteun:
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
dit is interessant om te sien hoe hierdie app die drive-scope ondersteun, wat ân gebruiker kan toelaat om van GCP na Workspace op te skaal as ân aanvaller daarin slaag om die gebruiker te dwing om ân token met hierdie scope te genereer.
Kyk hoe om dit hier te misbruik.
Diensrekeninge
Soos met geverifieerde gebruikers, as jy daarin slaag om die privaat-sleutel-lĂȘer van ân diensrekening te kompromitteer sal jy gewoonlik toegang daartoe kan behou so lank as wat jy wil.
Indien jy egter die OAuth token van ân diensrekening steel, kan dit nog interessanter wees, omdat, selfs al is hierdie tokens standaard slegs vir ân uur bruikbaar, as die slagoffer die private API-sleutel verwyder, die OAuth token steeds geldig sal bly totdat dit verstryk.
Metadata
Natuurlik, solank jy binne ân masjien is wat in die GCP-omgewing loop, sal jy in staat wees om die service account wat aan daardie masjien aangeheg is te bereik deur die metadata-endpoint te kontak (let daarop dat die OAuth tokens wat jy in hierdie endpoint kan toegang kry gewoonlik deur scopes beperk is).
Herstelmaatreëls
Sommige herstelmaatreëls vir hierdie tegnieke word verduidelik in https://www.netskope.com/blog/gcp-oauth-token-hijacking-in-google-cloud-part-2
Verwysings
- 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
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die đŹ Discord groep of die telegram groep of volg ons op Twitter đŠ @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
HackTricks Cloud

