GCP Pentesting

HackTricks को समर्थन दें

Basic Information

GCP environment का pentesting शुरू करने से पहले, आपको इसके काम करने के तरीके के बारे में कुछ मूल बातें जाननी होंगी ताकि आप समझ सकें कि आपको क्या करना है, misconfigurations को कैसे ढूंढना है और उनका exploit कैसे करना है।

organization hierarchy, permissions और अन्य मूलभूत अवधारणाओं जैसे concepts को समझाया गया है:

GCP - Basic Information

Labs to learn

GCP Pentester/Red Team Methodology

GCP environment का audit करने के लिए यह जानना बहुत महत्वपूर्ण है: कौन से services उपयोग किए जा रहे हैं, क्या exposed हो रहा है, किसके पास access है, और आंतरिक GCP services और external services कैसे जुड़े हुए हैं।

Red Team के दृष्टिकोण से, GCP environment को compromise करने का पहला कदम कुछ credentials प्राप्त करना है। यहां कुछ विचार दिए गए हैं कि इसे कैसे किया जाए:

  • github (या समान) में leaks - OSINT

  • Social Engineering (पृष्ठ देखें Workspace Security)

  • Password पुन: उपयोग (password leaks)

  • GCP-Hosted Applications में Vulnerabilities

  • Server Side Request Forgery metadata endpoint तक पहुंच के साथ

  • Local File Read

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

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

  • 3rd parties breached

  • Internal Employee

या unauthenticated service को compromise करके जो exposed है:

GCP - Unauthenticated Enum & Access

या यदि आप review कर रहे हैं तो आप बस इन roles के साथ credentials मांग सकते हैं:

GCP - Permissions for a Pentest

एक बार जब आप credentials प्राप्त करने में सफल हो जाते हैं, तो आपको यह जानना होगा कि वे credentials किसके हैं, और उनके पास क्या access है, इसलिए आपको कुछ बुनियादी enumeration करना होगा:

Basic Enumeration

SSRF

GCP metadata को enumerate करने के बारे में अधिक जानकारी के लिए निम्नलिखित hacktricks पृष्ठ देखें:

Whoami

GCP में आप यह जानने के लिए कई विकल्प आजमा सकते हैं कि आप कौन हैं:

#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

Org Enumeration

संगठन गणना

# 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

यदि आपके पास पर्याप्त अनुमतियाँ हैं, तो GCP खाते के अंदर प्रत्येक इकाई के विशेषाधिकारों की जाँच करना आपको यह समझने में मदद करेगा कि आप और अन्य पहचानें क्या कर सकते हैं और विशेषाधिकार कैसे बढ़ा सकते हैं

यदि आपके पास IAM को सूचीबद्ध करने के लिए पर्याप्त अनुमतियाँ नहीं हैं, तो आप उन्हें पता लगाने के लिए ब्रूट-फोर्स चुरा सकते हैंसूचीकरण और ब्रूट-फोर्सिंग कैसे करें देखें:

GCP - IAM, Principals & Org Policies Enum

अब जब आपके पास अपने क्रेडेंशियल्स के बारे में कुछ जानकारी है (और यदि आप एक रेड टीम हैं तो उम्मीद है कि आप पता नहीं चले हैं)। यह पता लगाने का समय है कि पर्यावरण में कौन सी सेवाएँ उपयोग की जा रही हैं। निम्नलिखित अनुभाग में आप कुछ सामान्य सेवाओं को सूचीबद्ध करने के कुछ तरीके देख सकते हैं।

Services Enumeration

GCP में सेवाओं की एक आश्चर्यजनक मात्रा है, निम्नलिखित पृष्ठ पर आपको मूल जानकारी, सूचीकरण चीटशीट्स, पता लगाने से बचने, स्थायित्व प्राप्त करने, और उनमें से कुछ के बारे में अन्य पोस्ट-एक्सप्लॉइटेशन ट्रिक्स मिलेंगी:

GCP - Services

ध्यान दें कि आपको सारा काम मैन्युअल रूप से करने की आवश्यकता नहीं है, इस पोस्ट के नीचे आप स्वचालित उपकरणों के बारे में एक अनुभाग पा सकते हैं।

इसके अलावा, इस चरण में आपने अप्रमाणित उपयोगकर्ताओं के लिए अधिक सेवाएँ उजागर की हो सकती हैं, आप उन्हें शोषण करने में सक्षम हो सकते हैं:

GCP - Unauthenticated Enum & Access

Privilege Escalation, Post Exploitation & Persistence

कुछ क्लाउड क्रेडेंशियल्स प्राप्त करने या क्लाउड के अंदर चल रही किसी सेवा से समझौता करने के बाद सबसे सामान्य तरीका समझौता किए गए खाते के पास हो सकने वाले गलत कॉन्फ़िगर किए गए विशेषाधिकारों का दुरुपयोग करना है। इसलिए, सबसे पहले आपको अपने विशेषाधिकारों को सूचीबद्ध करना चाहिए।

इसके अलावा, इस सूचीकरण के दौरान, याद रखें कि अनुमतियाँ "संगठन" के उच्चतम स्तर पर सेट की जा सकती हैं

GCP - Privilege EscalationGCP - Post ExploitationGCP - Persistence

Publicly Exposed Services

GCP सेवाओं को सूचीबद्ध करते समय आपने उनमें से कुछ को इंटरनेट पर तत्वों को उजागर करते हुए पाया होगा (VM/Containers पोर्ट्स, डेटाबेस या कतार सेवाएँ, स्नैपशॉट्स या बकेट्स...)। एक पेंटेस्टर/रेड टीमर के रूप में आपको हमेशा यह जांचना चाहिए कि क्या आप उनमें संवेदनशील जानकारी / कमजोरियाँ पा सकते हैं क्योंकि वे आपको AWS खाते में और अधिक पहुंच प्रदान कर सकते हैं

इस पुस्तक में आपको उजागर GCP सेवाओं को खोजने और उनकी जांच करने के बारे में जानकारी मिलनी चाहिए। उजागर नेटवर्क सेवाओं में कमजोरियों को खोजने के बारे में मैं आपको विशिष्ट सेवा के लिए खोजने की सलाह दूंगा:

GCP <--> Workspace Pivoting

एक प्लेटफ़ॉर्म में प्रिंसिपल्स से समझौता करना एक हमलावर को दूसरे को समझौता करने की अनुमति दे सकता है, इसे देखें:

GCP <--> Workspace Pivoting

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: gcloud cli का उपयोग करके GCP वातावरण को सूचीबद्ध करने और परिणामों को एक फ़ाइल में सहेजने के लिए Bash स्क्रिप्ट।

  • GCP-IAM-Privilege-Escalation: उच्च IAM विशेषाधिकारों को सूचीबद्ध करने और GCP में उनका दुरुपयोग करके विशेषाधिकार बढ़ाने के लिए स्क्रिप्ट (मैं सूचीबद्ध स्क्रिप्ट को चला नहीं सका)।

  • BF My GCP Permissions: आपके अनुमतियों को ब्रूटफोर्स करने के लिए स्क्रिप्ट।

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

gcloud, gsutil... नेटवर्क कैप्चर करें

याद रखें कि आप gcloud cli के साथ --log-http parameter का उपयोग करके requests को print कर सकते हैं जो टूल कर रहा है। यदि आप नहीं चाहते कि लॉग्स टोकन मान को हटा दें, तो gcloud config set log_http_redact_token false का उपयोग करें।

इसके अलावा, संचार को इंटरसेप्ट करने के लिए:

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 को gcloud में configure करना

metadata endpoint से exfiltrated service account OAuth token का उपयोग करने के लिए आप बस यह कर सकते हैं:

# 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

संदर्भ

HackTricks को समर्थन दें

Last updated