GCP Pentesting

Support HackTricks

Basic Information

Kabla ya kuanza pentesting mazingira ya GCP, kuna mambo machache muhimu unahitaji kujua kuhusu jinsi inavyofanya kazi ili kukusaidia kuelewa unachohitaji kufanya, jinsi ya kupata makosa ya usanidi na jinsi ya kuyatumia.

Mifano kama hierarchy ya organization, permissions na dhana nyingine za msingi zinaelezewa katika:

Labs to learn

GCP Pentester/Red Team Methodology

Ili kukagua mazingira ya GCP ni muhimu sana kujua: ni huduma zipi zinatumika, nini kinacho onyeshwa, nani ana ufikiaji wa nini, na jinsi huduma za ndani za GCP na huduma za nje zinavyounganishwa.

Kutoka kwa mtazamo wa Red Team, hatua ya kwanza ya kuathiri mazingira ya GCP ni kufanikiwa kupata credentials. Hapa kuna mawazo kadhaa juu ya jinsi ya kufanya hivyo:

  • Leaks katika github (au sawa) - OSINT

  • Social Engineering (Angalia ukurasa Workspace Security)

  • Password reuse (password leaks)

  • Uthibitisho katika Programu za GCP-Hosted

  • Server Side Request Forgery yenye ufikiaji wa metadata endpoint

  • Local File Read

  • /home/USERNAME/.config/gcloud/*

  • C:\Users\USERNAME\.config\gcloud\*

  • 3rd parties breached

  • Internal Employee

Au kwa kuathiri huduma isiyo na uthibitisho iliyonyeshwa:

Au ikiwa unafanya review unaweza tu kuomba credentials na hizi nafasi:

Baada ya kufanikiwa kupata credentials, unahitaji kujua ni nani mwenye hizo creds, na nini wana ufikiaji wa, hivyo unahitaji kufanya uainishaji wa msingi:

Basic Enumeration

SSRF

Kwa maelezo zaidi kuhusu jinsi ya kuainisha metadata ya GCP angalia ukurasa ufuatao wa hacktricks:

Whoami

Katika GCP unaweza kujaribu chaguzi kadhaa ili kujaribu kukisia wewe ni nani:

#If you are inside a compromise machine
gcloud auth list
curl -H "Content-Type: application/x-www-form-urlencoded" -d "access_token=$(gcloud auth print-access-token)" https://www.googleapis.com/oauth2/v1/tokeninfo
gcloud auth print-identity-token #Get info from the token

#If you compromised a metadata token or somehow found an OAuth token
curl -H "Content-Type: application/x-www-form-urlencoded" -d "access_token=<token>" https://www.googleapis.com/oauth2/v1/tokeninfo

Unaweza pia kutumia kiunganishi cha API /userinfo kupata maelezo zaidi kuhusu mtumiaji:

curl -H "Content-Type: application/x-www-form-urlencoded" -H "Authorization: OAuth $(gcloud auth print-access-token)" https://www.googleapis.com/oauth2/v1/userinfo

curl -H "Content-Type: application/x-www-form-urlencoded" -H "Authorization: OAuth <access_token>" https://www.googleapis.com/oauth2/v1/userinfo

Uainishaji wa Org

# Get organizations
gcloud organizations list #The DIRECTORY_CUSTOMER_ID is the Workspace ID
gcloud resource-manager folders list --organization <org_number> # Get folders
gcloud projects list # Get projects

Principals & IAM Enumeration

Ikiwa una ruhusa za kutosha, kuangalia haki za kila chombo ndani ya akaunti ya GCP kutakusaidia kuelewa ni nini wewe na vitambulisho vingine vinaweza kufanya na jinsi ya kuongeza haki.

Ikiwa huna ruhusa za kutosha kuhesabu IAM, unaweza kuiba kwa nguvu ili kujua. Angalia jinsi ya kufanya hesabu na kuiba kwa nguvu katika:

Sasa kwamba una taarifa fulani kuhusu vyeti vyako (na ikiwa wewe ni timu nyekundu, matumaini huja hujagundulika). Ni wakati wa kubaini ni huduma zipi zinatumika katika mazingira. Katika sehemu ifuatayo unaweza kuangalia njia kadhaa za kuhesabu huduma za kawaida.

Services Enumeration

GCP ina idadi kubwa ya huduma, katika ukurasa ufuatao utapata taarifa za msingi, hesabu za udanganyifu, jinsi ya kuepuka kugundulika, kupata kuendelea, na mbinu nyingine za baada ya unyakuzi kuhusu baadhi yao:

Kumbuka kwamba huhitaji kufanya kazi yote kwa mikono, hapa chini katika chapisho hili unaweza kupata sehemu kuhusu zana za kiotomatiki.

Zaidi ya hayo, katika hatua hii unaweza kugundua huduma zaidi zilizofichuliwa kwa watumiaji wasio na uthibitisho, unaweza kuwa na uwezo wa kuzitumia:

Privilege Escalation, Post Exploitation & Persistence

Njia ya kawaida mara tu unapopata vyeti vya wingu au umevamia huduma fulani inayotembea ndani ya wingu ni kudhulumu haki zisizo sahihi ambazo akaunti iliyovamiwa inaweza kuwa nazo. Hivyo, jambo la kwanza unapaswa kufanya ni kuhesabu haki zako.

Zaidi ya hayo, wakati wa hesabu hii, kumbuka kwamba ruhusa zinaweza kuwekwa kwenye kiwango cha juu cha "Shirika" pia.

Publicly Exposed Services

Wakati wa kuhesabu huduma za GCP unaweza kuwa umepata baadhi yao zinazoonyesha vipengele kwenye Mtandao (port za VM/Containers, hifadhidata au huduma za foleni, picha au ndoo...). Kama pentester/timu nyekundu unapaswa kila wakati kuangalia ikiwa unaweza kupata taarifa nyeti / udhaifu juu yao kwani zinaweza kukupa ufikiaji zaidi kwenye akaunti ya AWS.

Katika kitabu hiki unapaswa kupata taarifa kuhusu jinsi ya kupata huduma za GCP zilizofichuliwa na jinsi ya kuziangalia. Kuhusu jinsi ya kupata udhaifu katika huduma za mtandao zilizofichuliwa ningependekeza utafute huduma maalum katika:

GCP <--> Workspace Pivoting

Kuvamia wakala katika jukwaa moja kunaweza kumwezesha mshambuliaji kuvamia jukwaa lingine, angalia katika:

Automatic Tools

# Install
git clone https://github.com/google/gcp_scanner.git
cd gcp_scanner
virtualenv -p python3 venv
source venv/bin/activate
pip install -r requirements.txt
# Execute with gcloud creds
python3 __main__.py -o /tmp/output/ -g "$HOME/.config/gcloud"
  • gcp_enum: Skripti ya Bash ya kuhesabu mazingira ya GCP kwa kutumia gcloud cli na kuhifadhi matokeo katika faili.

  • GCP-IAM-Privilege-Escalation: Skripti za kuhesabu haki za juu za IAM na kupandisha haki katika GCP kwa kuzitumia (sikuweza kufanya skripti ya kuhesabu ikimbie).

  • BF My GCP Permissions: Skripti ya kubashiri ruhusa zako.

gcloud config & debug

# Login so gcloud can use your credentials
gcloud auth login
gcloud config set project security-devbox
gcloud auth print-access-token

# Login so SDKs can use your user credentials
gcloud auth application-default login
gcloud auth application-default set-quota-project security-devbox
gcloud auth application-default print-access-token

# Update gcloud
gcloud components update

Capture gcloud, gsutil... network

Kumbuka kwamba unaweza kutumia parameter --log-http pamoja na gcloud cli ili print requests ambazo chombo kinazifanya. Ikiwa hutaki kwamba logi zifanye redaction ya thamani ya token tumia gcloud config set log_http_redact_token false

Zaidi ya hayo, ili kukamata mawasiliano:

gcloud config set proxy/address 127.0.0.1
gcloud config set proxy/port 8080
gcloud config set proxy/type http
gcloud config set auth/disable_ssl_validation True

# If you don't want to completely disable ssl_validation use:
gcloud config set core/custom_ca_certs_file cert.pem

# Back to normal
gcloud config unset proxy/address
gcloud config unset proxy/port
gcloud config unset proxy/type
gcloud config unset auth/disable_ssl_validation
gcloud config unset core/custom_ca_certs_file

OAuth token configure in gcloud

Ili kutumia tokeni ya OAuth ya akaunti ya huduma iliyovuja kutoka kwa kiungo cha metadata unaweza tu kufanya:

# Via env vars
export CLOUDSDK_AUTH_ACCESS_TOKEN=<token>
gcloud projects list

# Via setup
echo "<token>" > /some/path/to/token
gcloud config set auth/access_token_file /some/path/to/token
gcloud projects list
gcloud config unset auth/access_token_file

References

Support HackTricks

Last updated