GCP - Add Custom SSH Metadata
Last updated
Last updated
Impara e pratica Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
La modifica dei metadati su un'istanza potrebbe portare a significativi rischi per la sicurezza se un attaccante ottiene i permessi necessari.
Su GCP, i sistemi Linux spesso eseguono script dall'Ambiente Ospite Linux Python per Google Compute Engine. Un componente critico di questo è il daemon degli account, progettato per controllare regolarmente l'endpoint dei metadati dell'istanza per aggiornamenti alle 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 al 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.
Esamina le chiavi SSH esistenti sull'istanza:
Esegui il comando per descrivere l'istanza e i suoi metadati per localizzare le chiavi SSH esistenti. La sezione rilevante nell'output sarà sotto metadata
, specificamente la chiave ssh-keys
.
Fai attenzione al formato delle chiavi SSH: il nome utente precede la chiave, separato da due punti.
Prepara un file di testo per i metadati della chiave SSH:
Salva i dettagli dei nomi utente e delle loro corrispondenti chiavi SSH in un file di testo chiamato meta.txt
. Questo è essenziale per preservare le chiavi esistenti mentre ne aggiungi di nuove.
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.
Aggiungi la nuova chiave pubblica a meta.txt
, mimando il formato trovato nei metadati dell'istanza.
Aggiorna i metadati della chiave SSH dell'istanza:
Applica i metadati aggiornati della chiave SSH all'istanza utilizzando il comando gcloud compute instances add-metadata
.
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).
Se non viene trovato alcun utente interessante, è possibile crearne uno nuovo a cui verranno concessi privilegi sudo
:
È possibile ampliare l'accesso SSH a più Macchine Virtuali (VM) in un ambiente cloud applicando le chiavi SSH a livello di progetto. Questo approccio consente l'accesso SSH a qualsiasi istanza all'interno del progetto che non ha esplicitamente bloccato le chiavi SSH a livello di progetto. Ecco una guida riassuntiva:
Applica le chiavi SSH a livello di progetto:
Usa 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 in tutte le VM del progetto, a meno che una VM non abbia abilitato l'opzione "Blocca le chiavi SSH a livello di progetto".
SSH nelle istanze utilizzando le chiavi a livello di progetto:
Con le chiavi SSH a livello di progetto in atto, puoi SSH in qualsiasi istanza all'interno del progetto. Le istanze che non bloccano le chiavi a livello di progetto accetteranno la chiave SSH, concedendo accesso.
Un metodo diretto per SSH in un'istanza è utilizzare il comando gcloud compute ssh [INSTANCE]
. Questo comando utilizza il tuo nome utente attuale e le chiavi SSH impostate a livello di progetto per tentare l'accesso.
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)