GCP - Storage Enum
Reading time: 8 minutes
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें, PRs को HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में सबमिट करके।
Storage
Google Cloud Platform (GCP) Storage एक क्लाउड-आधारित स्टोरेज समाधान है जो असंरचित डेटा के लिए अत्यधिक टिकाऊ और उपलब्ध वस्तु भंडारण प्रदान करता है। यह प्रदर्शन, उपलब्धता और लागत के आधार पर विभिन्न स्टोरेज क्लासेस प्रदान करता है, जिसमें Standard, Nearline, Coldline, और Archive शामिल हैं। GCP Storage उन्नत सुविधाएँ भी प्रदान करता है जैसे कि लाइफसाइकिल नीतियाँ, संस्करणन, और एक्सेस नियंत्रण ताकि डेटा को प्रभावी ढंग से प्रबंधित और सुरक्षित किया जा सके।
बकेट को एक क्षेत्र, 2 क्षेत्रों या मल्टी-रीजन (डिफ़ॉल्ट) में संग्रहीत किया जा सकता है।
Storage Types
- Standard Storage: यह डिफ़ॉल्ट स्टोरेज विकल्प है जो बार-बार एक्सेस किए गए डेटा के लिए उच्च-प्रदर्शन, कम-लेटेंसी एक्सेस प्रदान करता है। यह वेबसाइट सामग्री, मीडिया स्ट्रीमिंग, और डेटा एनालिटिक्स पाइपलाइनों की मेज़बानी सहित कई उपयोग मामलों के लिए उपयुक्त है।
- Nearline Storage: यह स्टोरेज क्लास कम स्टोरेज लागत और थोड़ी अधिक एक्सेस लागत प्रदान करता है। यह कम बार एक्सेस किए गए डेटा के लिए अनुकूलित है, जिसमें न्यूनतम स्टोरेज अवधि 30 दिन है। यह बैकअप और आर्काइव के उद्देश्यों के लिए आदर्श है।
- Coldline Storage: यह स्टोरेज क्लास कम बार एक्सेस किए गए डेटा के दीर्घकालिक भंडारण के लिए अनुकूलित है, जिसमें न्यूनतम स्टोरेज अवधि 90 दिन है। यह Nearline Storage की तुलना में कम स्टोरेज लागत प्रदान करता है, लेकिन उच्च एक्सेस लागत के साथ।
- Archive Storage: यह स्टोरेज क्लास ठंडे डेटा के लिए डिज़ाइन किया गया है जिसे बहुत कम बार एक्सेस किया जाता है, जिसमें न्यूनतम स्टोरेज अवधि 365 दिन है। यह सभी GCP स्टोरेज विकल्पों में सबसे कम स्टोरेज लागत प्रदान करता है लेकिन सबसे अधिक एक्सेस लागत के साथ। यह डेटा के दीर्घकालिक संरक्षण के लिए उपयुक्त है जिसे अनुपालन या नियामक कारणों से संग्रहीत करने की आवश्यकता होती है।
- Autoclass: यदि आप नहीं जानते कि आप डेटा को कितना एक्सेस करने वाले हैं तो आप Autoclass का चयन कर सकते हैं और GCP स्वचालित रूप से आपके लिए स्टोरेज का प्रकार बदल देगा ताकि लागत को कम किया जा सके।
Access Control
डिफ़ॉल्ट रूप से, एक्सेस को IAM के माध्यम से नियंत्रित करने की सिफारिश की जाती है, लेकिन ACLs के उपयोग को सक्षम करना भी संभव है।
यदि आप केवल IAM (डिफ़ॉल्ट) का उपयोग करने का चयन करते हैं और 90 दिन बीत जाते हैं, तो आप बकेट के लिए ACLs सक्षम नहीं कर पाएंगे।
Versioning
संस्करणन को सक्षम करना संभव है, यह बकेट के अंदर फ़ाइल के पुराने संस्करणों को सहेजता है। यह संस्करणों की संख्या को कॉन्फ़िगर करना संभव है जिसे आप रखना चाहते हैं और यहां तक कि कितने समय तक आप गैर-प्रचलित संस्करणों (पुराने संस्करणों) को जीवित रखना चाहते हैं। Standard प्रकार के लिए 7 दिन की सिफारिश की जाती है।
गैर-प्रचलित संस्करण का मेटाडेटा रखा जाता है। इसके अलावा, गैर-प्रचलित संस्करणों के ACLs भी रखे जाते हैं, इसलिए पुराने संस्करणों के ACLs वर्तमान संस्करण से भिन्न हो सकते हैं।
docs में अधिक जानें।
Retention Policy
यह बताएं कि आप बकेट के अंदर वस्तुओं के हटाने पर प्रतिबंध लगाने के लिए कितने समय तक चाहते हैं (कम से कम अनुपालन के लिए बहुत उपयोगी)।
संस्करणन या रिटेंशन नीति में से केवल एक को एक ही समय में सक्षम किया जा सकता है।
Encryption
डिफ़ॉल्ट रूप से वस्तुएं Google प्रबंधित कुंजियों का उपयोग करके एन्क्रिप्ट की जाती हैं, लेकिन आप KMS से एक कुंजी का भी उपयोग कर सकते हैं।
Public Access
यह बाहरी उपयोगकर्ताओं (GCP में लॉग इन किए हुए या नहीं) को बकेट की सामग्री तक पहुंच प्रदान करना संभव है।
डिफ़ॉल्ट रूप से, जब एक बकेट बनाया जाता है, तो इसमें सार्वजनिक रूप से उजागर करने का विकल्प बंद होगा, लेकिन पर्याप्त अनुमतियों के साथ इसे बदला जा सकता है।
बकेट तक पहुंचने के लिए URL का प्रारूप है https://storage.googleapis.com/<bucket-name>
या https://<bucket_name>.storage.googleapis.com
(दोनों मान्य हैं)।
HMAC Keys
HMAC कुंजी एक प्रकार की प्रमाणपत्र है और इसे Cloud Storage में एक सेवा खाते या उपयोगकर्ता खाते के साथ जोड़ा जा सकता है। आप HMAC कुंजी का उपयोग हस्ताक्षर बनाने के लिए करते हैं जो फिर Cloud Storage के लिए अनुरोधों में शामिल होते हैं। हस्ताक्षर दिखाते हैं कि दिया गया अनुरोध उपयोगकर्ता या सेवा खाते द्वारा अधिकृत है।
HMAC कुंजी में दो मुख्य भाग होते हैं, एक एक्सेस ID और एक गुप्त।
- Access ID: एक अल्फ़ान्यूमेरिक स्ट्रिंग जो एक विशिष्ट सेवा या उपयोगकर्ता खाते से जुड़ी होती है। जब इसे सेवा खाते से जोड़ा जाता है, तो स्ट्रिंग की लंबाई 61 वर्ण होती है, और जब इसे उपयोगकर्ता खाते से जोड़ा जाता है, तो स्ट्रिंग की लंबाई 24 वर्ण होती है। निम्नलिखित एक एक्सेस ID का उदाहरण दिखाता है:
GOOGTS7C7FUP3AIRVJTE2BCDKINBTES3HC2GY5CBFJDCQ2SYHV6A6XXVTJFSA
- Secret: एक 40-वर्ण का Base-64 एन्कोडेड स्ट्रिंग जो एक विशिष्ट एक्सेस ID से जुड़ी होती है। एक गुप्त एक पूर्व-शेयर की गई कुंजी है जिसे केवल आप और Cloud Storage जानते हैं। आप अपने गुप्त का उपयोग प्रमाणीकरण प्रक्रिया के हिस्से के रूप में हस्ताक्षर बनाने के लिए करते हैं। निम्नलिखित एक गुप्त का उदाहरण दिखाता है:
bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ
दोनों एक्सेस ID और गुप्त एक HMAC कुंजी की अद्वितीय पहचान करते हैं, लेकिन गुप्त बहुत अधिक संवेदनशील जानकारी है, क्योंकि इसका उपयोग हस्ताक्षर बनाने के लिए किया जाता है।
Enumeration
# List all storage buckets in project
gsutil ls
# Get each bucket configuration (protections, CLs, times, configs...)
gsutil ls -L
# List contents of a specific bucket
gsutil ls gs://bucket-name/
gsutil ls -r gs://bucket-name/ # Recursive
gsutil ls -a gs://bucket-name/ # Get ALL versions of objects
# Cat the context of a file without copying it locally
gsutil cat 'gs://bucket-name/folder/object'
gsutil cat 'gs://bucket-name/folder/object#<num>' # cat specific version
# Copy an object from the bucket to your local storage for review
gsutil cp gs://bucket-name/folder/object ~/
# List using a raw OAuth token
## Useful because "CLOUDSDK_AUTH_ACCESS_TOKEN" and "gcloud config set auth/access_token_file" doesn't work with gsutil
curl -H "Authorization: Bearer $TOKEN" "https://storage.googleapis.com/storage/v1/b/<storage-name>/o"
# Download file content from bucket
curl -H "Authorization: Bearer $TOKEN" "https://storage.googleapis.com/storage/v1/b/supportstorage-58249/o/flag.txt?alt=media" --output -
# Enumerate HMAC keys
gsutil hmac list
# Get permissions
gcloud storage buckets get-iam-policy gs://bucket-name/
gcloud storage objects get-iam-policy gs://bucket-name/folder/object
यदि आपको बकेट्स की सूची बनाते समय अनुमति अस्वीकृत त्रुटि मिलती है, तो भी आपके पास सामग्री तक पहुंच हो सकती है। तो, अब जब आप बकेट्स के नाम के नियम के बारे में जानते हैं, तो आप संभावित नामों की एक सूची उत्पन्न कर सकते हैं और उन्हें एक्सेस करने की कोशिश कर सकते हैं:
for i in $(cat wordlist.txt); do gsutil ls -r gs://"$i"; done
storage.objects.list
और storage.objects.get
अनुमतियों के साथ, आपको बकेट से सभी फ़ोल्डरों और फ़ाइलों को सूचीबद्ध करने में सक्षम होना चाहिए ताकि आप उन्हें डाउनलोड कर सकें। आप इसे इस Python स्क्रिप्ट के साथ प्राप्त कर सकते हैं:
import requests
import xml.etree.ElementTree as ET
def list_bucket_objects(bucket_name, prefix='', marker=None):
url = f"https://storage.googleapis.com/{bucket_name}?prefix={prefix}"
if marker:
url += f"&marker={marker}"
response = requests.get(url)
xml_data = response.content
root = ET.fromstring(xml_data)
ns = {'ns': 'http://doc.s3.amazonaws.com/2006-03-01'}
for contents in root.findall('.//ns:Contents', namespaces=ns):
key = contents.find('ns:Key', namespaces=ns).text
print(key)
next_marker = root.find('ns:NextMarker', namespaces=ns)
if next_marker is not None:
next_marker_value = next_marker.text
list_bucket_objects(bucket_name, prefix, next_marker_value)
list_bucket_objects('<storage-name>')
विशेषाधिकार वृद्धि
अगली पृष्ठ पर आप विशेषाधिकार बढ़ाने के लिए स्टोरेज अनुमतियों का दुरुपयोग कैसे करें देख सकते हैं:
अनधिकृत Enum
GCP - Storage Unauthenticated Enum
पोस्ट एक्सप्लोइटेशन
GCP - Storage Post Exploitation
स्थिरता
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें, PRs को HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में सबमिट करके।