GCP - Storage Enum

Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (Ειδικός Red Team του HackTricks στο AWS)!

Άλλοι τρόποι υποστήριξης του HackTricks:

Αποθήκευση

Η Αποθήκευση του Google Cloud Platform (GCP) είναι μια λύση αποθήκευσης βασισμένη στο cloud που παρέχει υψηλή αντοχή και διαθεσιμότητα αποθήκευσης αντικειμένων για μη δομημένα δεδομένα. Προσφέρει διάφορες κατηγορίες αποθήκευσης βασισμένες στην απόδοση, τη διαθεσιμότητα και το κόστος, συμπεριλαμβανομένων των Standard, Nearline, Coldline και Archive. Η Αποθήκευση του GCP παρέχει επίσης προηγμένες λειτουργίες όπως πολιτικές κύκλου ζωής, εκδόσεις και έλεγχο πρόσβασης για τη διαχείριση και ασφάλεια των δεδομένων αποτελεσματικά.

Το κάδος μπορεί να αποθηκευτεί σε μια περιοχή, σε 2 περιοχές ή πολυπεριοχή (προεπιλογή).

Τύποι Αποθήκευσης

  • Κανονική Αποθήκευση: Αυτή είναι η προεπιλεγμένη επιλογή αποθήκευσης που προσφέρει υψηλή απόδοση και χαμηλή καθυστέρηση πρόσβασης σε συχνά προσπελαζόμενα δεδομένα. Είναι κατάλληλη για μια ευρεία γκάμα περιπτώσεων χρήσης, συμπεριλαμβανομένης της παροχής περιεχομένου ιστοσελίδων, ροής πολυμέσων και φιλοξενίας αναλυτικών δεδομένων.

  • Αποθήκευση Nearline: Αυτή η κατηγορία αποθήκευσης προσφέρει χαμηλότερο κόστος αποθήκευσης και ελαφρώς υψηλότερο κόστος πρόσβασης από την Κανονική Αποθήκευση. Είναι βελτιστοποιημένη για δεδομένα που προσπελάζονται σπάνια, με ελάχιστη διάρκεια αποθήκευσης 30 ημερών. Είναι ιδανική για αντίγραφα ασφαλείας και αρχειοθέτηση.

  • Αποθήκευση Coldline: Αυτή η κατηγορία αποθήκευσης είναι βελτιστοποιημένη για μακροπρόθεσμη αποθήκευση δεδομένων που προσπελάζονται σπάνια, με ελάχιστη διάρκεια αποθήκευσης 90 ημερών. Προσφέρει χαμηλότερο κόστος αποθήκευσης από την Αποθήκευση Nearline, αλλά με υψηλότερο κόστος πρόσβασης.

  • Αποθήκευση Archive: Αυτή η κατηγορία αποθήκευσης είναι σχεδιασμένη για κρύα δεδομένα που προσπελάζονται πολύ σπάνια, με ελάχιστη διάρκεια αποθήκευσης 365 ημερών. Προσφέρει το χαμηλότερο κόστος αποθήκευσης από όλες τις επιλογές αποθήκευσης του GCP αλλά με το υψηλότερο κόστος πρόσβασης. Είναι κατάλληλη για τη μακροπρόθεσμη διατήρηση δεδομένων που πρέπει να αποθηκεύονται για λόγους συμμόρφωσης ή κανονιστικούς λόγους.

  • Αυτόματη Κατηγοριοποίηση: Αν δεν ξέρετε πόσο συχνά θα έχετε πρόσβαση στα δεδομένα, μπορείτε να επιλέξετε την Αυτόματη Κατηγοριοποίηση και το GCP θα αλλάξει αυτόματα τον τύπο αποθήκευσης για ελαχιστοποίηση των κόστων.

Έλεγχος Πρόσβασης

Από προεπιλογή συνιστάται να ελέγχετε την πρόσβαση μέσω IAM, αλλά είναι επίσης δυνατό να ενεργοποιήσετε τη χρήση των ACLs. Αν επιλέξετε να χρησιμοποιήσετε μόνο το IAM (προεπιλογή) και περάσουν 90 ημέρες, δεν θα μπορείτε να ενεργοποιήσετε τα ACLs για τον κάδο.

Εκδόσεις

Είναι δυνατόν να ενεργοποιήσετε τις εκδόσεις, αυτό θα αποθηκεύει παλιές εκδόσεις του αρχείου μέσα στον κάδο. Είναι δυνατό να διαμορφώσετε τον αριθμό των εκδόσεων που θέλετε να διατηρήσετε και ακόμα και πόσο καιρό θέλετε να ζουν μη τρέχουσες εκδόσεις (παλιές εκδόσεις). Συνιστάται 7 ημέρες για τύπο Κανονική.

Τα μεταδεδομένα μιας μη τρέχουσας έκδοσης διατηρούνται. Επιπλέον, τα ACLs των μη τρέχουσων εκδόσεων διατηρούνται επίσης, έτσι οι παλιότερες εκδόσεις μπορεί να έχουν διαφορετικά ACLs από την τρέχουσα έκδοση.

Μάθετε περισσότερα στα έγγραφα.

Πολιτική Διατήρησης

Υποδείξτε πόσο διάστημα θέλετε να απαγορεύετε τη διαγραφή των Αντικειμένων μέσα στον κάδο (πολύ χρήσιμο για τη συμμόρφωση τουλάχιστον). Μόνο μία από τις εκδόσεις ή την πολιτική διατήρησης μπορεί να ενεργοποιηθεί ταυτόχρονα.

Κρυπτογράφηση

Από προεπιλογή τα αντικείμενα κρυπτογραφούνται χρησιμοποιώντας διαχειριζόμενα κλειδιά της Google, αλλά μπορείτε επίσης να χρησιμοποιήσετε ένα κλειδί από το KMS.

Δημόσια Πρόσβαση

Είναι δυνατόν να δώσετε πρόσβαση στο περιεχόμενο των κάδων σε εξωτερικούς χρήστες (συνδεδεμένους ή όχι στο GCP). Από προεπιλογή, όταν δημιουργείτε έναν κάδο, θα έχει απενεργοποιημένη την επιλογή να εκθέσει δημόσια τον κάδο, αλλά με αρκετές άδειες το μπορείτε να αλλάξετε.

Η μορφή ενός URL για πρόσβαση σε έναν κάδο είναι **https://storage.googleapis.com/<όνομα-κάδου> ή `

# 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

Εάν λάβετε ένα σφάλμα άρνησης άδειας κατά τη λίστα των κάδων, ενδέχεται να έχετε ακόμα πρόσβαση στο περιεχόμενο. Οπότε, τώρα που γνωρίζετε τον κανόνα ονομασίας των κάδων, μπορείτε να δημιουργήσετε μια λίστα πιθανών ονομάτων και να προσπαθήσετε να αποκτήσετε πρόσβαση σε αυτά:

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>')

Εscalation προνομίων

Στην ακόλουθη σελίδα μπορείτε να ελέγξετε πώς να καταχραστείτε τα δικαιώματα αποθήκευσης για εscalation προνομίων:

pageGCP - Storage Privesc

Ανεξέλεγκτη Απαρίθμηση

pageGCP - Storage Unauthenticated Enum

Μετά την Εκμετάλλευση

pageGCP - Storage Post Exploitation

Διατήρηση

pageGCP - Storage Persistence
Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Άλλοι τρόποι υποστήριξης του HackTricks:

Last updated