GCP Pentesting

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

मौलिक जानकारी

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

संगठन व्यवस्था, अनुमतियाँ और अन्य मौलिक अवधारणाएँ निम्नलिखित में स्पष्ट की गई हैं:

pageGCP - Basic Information

सीखने के लिए लैब्स

GCP पेंटेस्टर/रेड टीम मेथडोलॉजी

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

रेड टीम के दृष्टिकोण से, GCP माहौल को कंप्रमाइज करने का पहला कदम कुछ क्रेडेंशियल्स प्राप्त करना है। यहाँ आपको इसे कैसे करने के विचार हैं:

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

  • सोशल इंजीनियरिंग (पृष्ठ Workspace Security देखें)

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

  • GCP-होस्टेड एप्लिकेशन में वंशवाद

  • सर्वर साइड रिक्वेस्ट फॉर्जरी मेटाडेटा एंडपॉइंट तक पहुंच

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

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

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

  • 3rd पार्टी उल्लंघित

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

या अप्रमाणित सेवा को कंप्रमाइज करके:

pageGCP - Unauthenticated Enum & Access

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

pageGCP - Permissions for a Pentest

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

मौलिक गणना

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

संगठन जांच

# 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

सिद्धांत और IAM जांच

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

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

pageGCP - IAM, Principals & Org Policies Enum

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

सेवाओं का नामांकन

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

pageGCP - Services

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

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

pageGCP - Unauthenticated Enum & Access

विशेषाधिकार उन्नति, पोस्ट एक्सप्लोइटेशन और स्थिरता

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

इस नामांकन के दौरान, ध्यान दें कि अनुमतियाँ "संगठन" के सबसे उच्च स्तर पर सेट की जा सकती हैं भी।

pageGCP - Privilege EscalationpageGCP - Post ExploitationpageGCP - Persistence

सार्वजनिक रूप से उजागर सेवाएं

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

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

GCP <--> Workspace Pivoting

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

pageGCP <--> Workspace Pivoting

स्वचालित उपकरण

# 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-IAM-Privilege-Escalation: उच्च आईएएम विशेषाधिकारों की जाँच करने और उन्हें उच्चाधिकार देने के लिए स्क्रिप्ट: जीसीपी में उनका दुरुपयोग करते हुए (मैं जाँच स्क्रिप्ट को चलाने में सक्षम नहीं हो सका)।

जीक्लाउड कॉन्फ़िग और डीबग

# 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 पैरामीटर का उपयोग कर सकते हैं ताकि उपकरण द्वारा किए जा रहे रिक्वेस्ट्स को प्रिंट किया जा सके। यदि आप चाहते हैं कि लॉग्स में टोकन मान को रेडैक्ट न किया जाए, तो 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

gcloud में OAuth टोकन कॉन्फ़िगर करें

मेटाडेटा एंडपॉइंट से एक्सफिल्ट्रेटेड सर्विस अकाउंट 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

संदर्भ

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

Last updated