GCP Pentesting

Support HackTricks

Basic Information

GCP वातावरण का pentesting शुरू करने से पहले, कुछ बुनियादी बातें हैं जो आपको जाननी चाहिए कि यह कैसे काम करता है, ताकि आप समझ सकें कि आपको क्या करना है, कैसे गलत कॉन्फ़िगरेशन खोजें और उन्हें कैसे भुनाएं।

संगठन पदानुक्रम, अनुमतियाँ और अन्य बुनियादी अवधारणाएँ इस में समझाई गई हैं:

Labs to learn

GCP Pentester/Red Team Methodology

GCP वातावरण का ऑडिट करने के लिए यह जानना बहुत महत्वपूर्ण है: कौन सी सेवाएँ उपयोग की जा रही हैं, क्या प्रकट किया जा रहा है, किसके पास पहुँच है, और आंतरिक GCP सेवाएँ और बाहरी सेवाएँ कैसे जुड़ी हुई हैं।

Red Team के दृष्टिकोण से, GCP वातावरण को समझौता करने का पहला कदम कुछ क्रेडेंशियल्स प्राप्त करना है। यहाँ कुछ विचार दिए गए हैं कि आप ऐसा कैसे कर सकते हैं:

  • github (या समान) में लीक - OSINT

  • सामाजिक इंजीनियरिंग (पृष्ठ देखें Workspace Security)

  • पासवर्ड पुन: उपयोग (पासवर्ड लीक)

  • GCP-Hosted Applications में कमजोरियाँ

  • Server Side Request Forgery जिसमें मेटाडेटा एंडपॉइंट तक पहुँच है

  • स्थानीय फ़ाइल पढ़ें

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

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

  • 3rd पार्टियों के भंग

  • आंतरिक कर्मचारी

या अप्रमाणित सेवा को समझौता करके जो प्रकट है:

या यदि आप एक समीक्षा कर रहे हैं तो आप बस इन भूमिकाओं के साथ क्रेडेंशियल्स मांग सकते हैं:

एक बार जब आप क्रेडेंशियल्स प्राप्त करने में सफल हो जाते हैं, तो आपको यह जानने की आवश्यकता है कि ये क्रेडेंशियल्स किसके हैं, और इनके पास क्या पहुँच है, इसलिए आपको कुछ बुनियादी एन्यूमरेशन करना होगा:

Basic Enumeration

SSRF

GCP मेटाडेटा को एन्यूमरेट करने के बारे में अधिक जानकारी के लिए निम्नलिखित हैक्ट्रिक्स पृष्ठ देखें:

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

आप उपयोगकर्ता के बारे में अधिक जानकारी प्राप्त करने के लिए API एंडपॉइंट /userinfo का भी उपयोग कर सकते हैं:

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

संगठन गणना

# 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 को सूचीबद्ध करने के लिए पर्याप्त अनुमतियाँ नहीं हैं, तो आप उन्हें ब्रूट-फोर्स करके चुरा सकते हैं। जांचें संख्यांकन और ब्रूट-फोर्सिंग कैसे करें:

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

Services Enumeration

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

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

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

Privilege Escalation, Post Exploitation & Persistence

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

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

Publicly Exposed Services

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

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

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

Capture gcloud, gsutil... network

याद रखें कि आप gcloud cli के साथ --log-http पैरामीटर का उपयोग कर सकते हैं ताकि उपकरण द्वारा किए जा रहे अनुरोधों को प्रिंट किया जा सके। यदि आप नहीं चाहते कि लॉग टोकन मान को छुपाएं, तो 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 टोकन gcloud में कॉन्फ़िगर करें

मेटाडेटा एंडपॉइंट से निकाले गए सेवा खाते के OAuth टोकन का उपयोग करने के लिए आप बस कर सकते हैं:

# 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