GCP Pentesting

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

Άλλοι τρόποι για να υποστηρίξετε το HackTricks:

Βασικές πληροφορίες

Πριν ξεκινήσετε το pentesting ενός περιβάλλοντος GCP, υπάρχουν μερικά βασικά πράγματα που πρέπει να γνωρίζετε για το πώς λειτουργεί για να σας βοηθήσει να κατανοήσετε τι χρειάζεστε να κάνετε, πώς να βρείτε μη σωστές ρυθμίσεις και πώς να τις εκμεταλλευτείτε.

Έννοιες όπως η ιεραρχία του οργανισμού, οι άδειες και άλλες βασικές έννοιες εξηγούνται στο:

pageGCP - Basic Information

Εργαστήρια για μάθηση

Μεθοδολογία GCP Pentester/Red Team

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

Από την άποψη της Ομάδας Red Team, το πρώτο βήμα για να διακυβεύσετε ένα περιβάλλον GCP είναι να καταφέρετε να αποκτήσετε κάποια διαπιστευτήρια. Εδώ έχετε μερικές ιδέες για το πώς να το κάνετε:

  • Διαρροές στο github (ή παρόμοιες) - OSINT

  • Κοινωνική Μηχανική (Ελέγξτε τη σελίδα Ασφάλεια Workspace)

  • Επαναχρησιποίηση κωδικών πρόσβασης (διαρροές κωδικών πρόσβασης)

  • Ευπάθειες σε εφαρμογές που φιλοξενούνται στο GCP

  • Server Side Request Forgery με πρόσβαση στο τέλος των μεταδεδομένων

  • Ανάγνωση τοπικού αρχείου

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

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

  • Παραβιάσεις τρίτων

  • Εσωτερικός Υπάλληλος

Ή με το διάβρωση ενός μη εξουσιοδοτημένου υπηρεσίας που εκτίθεται:

pageGCP - Unauthenticated Enum & Access

Ή εάν κάνετε μια αναθεώρηση μπορείτε απλά να ζητήσετε διαπιστευτήρια με αυτούς τους ρόλους:

pageGCP - Permissions for a Pentest

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

Βασική Απαρίθμηση

SSRF

Για περισσότερες πληροφορίες σχετικά με το πώς να απαριθμήσετε τα μεταδεδομένα GCP ελέγξτε την ακόλουθη σελίδα 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

Απαρίθμηση Οργανισμού

# 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, μπορείτε να τα κλέψετε με βίαιο τρόπο για να τα ανακαλύψετε. Ελέγξτε πώς να κάνετε την απαρίθμηση και το brute-forcing στο:

pageGCP - IAM, Principals & Org Policies Enum

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

Απαρίθμηση Υπηρεσιών

Το GCP έχει μια εκπληκτική ποσότητα υπηρεσιών, στην ακόλουθη σελίδα θα βρείτε βασικές πληροφορίες, cheatsheets απαρίθμησης, πώς να αποφύγετε την ανίχνευση, να αποκτήσετε επιμονή και άλλα μετά την εκμετάλλευση κόλπα για μερικές από αυτές:

pageGCP - Services

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

Επιπλέον, σε αυτό το στάδιο μπορεί να έχετε ανακαλύψει περισσότερες υπηρεσίες που εκτίθενται σε μη εξουσιοδοτημένους χρήστες, μπορείτε να τις εκμεταλλευτείτε:

pageGCP - Unauthenticated Enum & Access

Ανέλιξη Προνομίων, Μετά την Εκμετάλλευση και Επιμονή

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

Επιπλέον, κατά τη διάρκεια αυτής της απαρίθμησης, θυμηθείτε ότι οι άδειες μπορούν να οριστούν στο υψηλότερο επίπεδο του "Οργανισμού" επίσης.

pageGCP - Privilege EscalationpageGCP - Post ExploitationpageGCP - Persistence

Δημόσια Εκτεθειμένες Υπηρεσίες

Κατά την απαρίθμηση των υπηρεσιών GCP, μπορεί να έχετε βρει ορισμένες από αυτές να εκθέτουν στο Διαδίκτυο στοιχεία (θύρες VM/Containers, βάσεις δεδομένων ή υπηρεσίες ουράς, αντίγραφα ασφαλείας ή κάδους...). Ως pentester/red teamer πρέπει πάντα να ελέγχετε εάν μπορείτε να βρείτε ευαίσθητες πληροφορίες / ευπάθειες σε αυτές, καθώς μπορεί να σας παρέχουν περαιτέρω πρόσβαση στον λογαριασμό GCP.

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

Αλληλεπίδραση GCP <--> Workspace

Η παραβίαση αρχών σε ένα πλαίσιο μπορεί να επιτρέψει σε έναν επιτιθέμενο να παραβιάσει το άλλο, ελέγξτε το στο:

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: Σενάριο Bash για να απαριθμήσει ένα περιβάλλον GCP χρησιμοποιώντας το gcloud cli και να αποθηκεύσει τα αποτελέσματα σε ένα αρχείο.

  • GCP-IAM-Privilege-Escalation: Σενάρια για να απαριθμήσει υψηλά προνόμια IAM και να αναβαθμίσει προνόμια στο GCP καταχρώντας τα (δεν μπόρεσα να εκτελέσω το σενάριο απαρίθμησης).

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...

Θυμηθείτε ότι μπορείτε να χρησιμοποιήσετε τη παράμετρο --log-http με το gcloud cli για να εκτυπώσετε τα αιτήματα που εκτελεί το εργαλείο. Εάν δεν θέλετε οι καταγραφές να αποκρύπτουν την τιμή του τοκέν, χρησιμοποιήστε 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

Για να χρησιμοποιήσετε έναν κλεμμένο λογαριασμό υπηρεσίας OAuth token από το metadata endpoint, απλά μπορείτε να κάνετε τα εξής:

# 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

Αναφορές

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

Άλλοι τρόποι για να υποστηρίξετε το HackTricks:

Last updated