GCP Pentesting

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks

Basic Information

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

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

GCP - Basic Information

Labs to learn

GCP Pentester/Red Team Methodology

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

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

  • Leaks σε github (ή παρόμοια) - OSINT
  • Social Engineering (Δείτε τη σελίδα Workspace Security)
  • Επαναχρησιμοποίηση κωδικών πρόσβασης (leaks κωδικών)
  • Ευπάθειες σε GCP-Hosted Applications
  • Server Side Request Forgery με πρόσβαση στο endpoint μεταδεδομένων
  • Local File Read
  • /home/USERNAME/.config/gcloud/*
  • C:\Users\USERNAME\.config\gcloud\*
  • 3rd parties breached
  • Εσωτερικός Υπάλληλος

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

GCP - Unauthenticated Enum & Access

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

GCP - Permissions for a Pentest

Note

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

Basic Enumeration

SSRF

Για περισσότερες πληροφορίες σχετικά με το πώς να αριθμήσετε τα μεταδεδομένα GCP, ελέγξτε την παρακάτω σελίδα hacktricks:

Cloud SSRF - 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

Μπορείτε επίσης να χρησιμοποιήσετε το API endpoint /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, μπορείτε να τα κλέψετε με brute-force για να τα ανακαλύψετε.
Δείτε πώς να κάνετε την καταγραφή και το brute-forcing στο:

GCP - IAM, Principals & Org Policies Enum

Note

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

Services Enumeration

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

GCP - Services

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

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

GCP - Unauthenticated Enum & Access

Privilege Escalation, Post Exploitation & Persistence

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

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

GCP - Privilege Escalation

GCP - Post Exploitation

GCP - Persistence

Publicly Exposed Services

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

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

HackTricks - HackTricks

GCP <–> Workspace Pivoting

Η παραβίαση των principals σε μία πλατφόρμα μπορεί να επιτρέψει σε έναν επιτιθέμενο να παραβιάσει την άλλη, ελέγξτε το στο:

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: Bash script για την καταμέτρηση ενός περιβάλλοντος GCP χρησιμοποιώντας gcloud cli και αποθήκευση των αποτελεσμάτων σε ένα αρχείο.
  • GCP-IAM-Privilege-Escalation: Scripts για την καταμέτρηση υψηλών IAM δικαιωμάτων και για την κλιμάκωση δικαιωμάτων σε GCP εκμεταλλευόμενα αυτά (δεν μπόρεσα να εκτελέσω το script καταμέτρησης).
  • BF My GCP Permissions: Script για brute force των δικαιωμάτων σας.

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

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

Για να χρησιμοποιήσετε ένα εξαγόμενο OAuth token υπηρεσίας από το 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

Αναφορές

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks