GCP - Add Custom SSH Metadata
Last updated
Last updated
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)
La modificación de metadatos en una instancia podría llevar a riesgos de seguridad significativos si un atacante obtiene los permisos necesarios.
En GCP, los sistemas Linux a menudo ejecutan scripts desde el Entorno de Invitado de Python para Google Compute Engine. Un componente crítico de esto es el demonio 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 demonio 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 sudo
, dependiendo del formato de la clave. Y el atacante podrá comprometer el host.
Examinar Claves SSH Existentes en la Instancia:
Ejecuta 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 clave ssh-keys
.
Presta 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 Metadatos de Clave SSH:
Guarda 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 (alice
en este ejemplo):
Usa el comando ssh-keygen
para generar una nueva clave SSH, asegurándote de que el campo de comentario (-C
) coincida con el nombre de usuario objetivo.
Añade la nueva clave pública a meta.txt
, imitando el formato encontrado en los metadatos de la instancia.
Actualizar los Metadatos de Clave SSH de la Instancia:
Aplica los metadatos de clave SSH actualizados a la instancia usando el comando gcloud compute instances add-metadata
.
Acceder a la Instancia Usando la Nueva Clave SSH:
Conéctate a la instancia con SSH usando la nueva clave, accediendo a la shell en el contexto del usuario objetivo (alice
en este ejemplo).
Si no se encuentra un usuario interesante, es posible crear uno nuevo que se le otorgarán privilegios sudo
:
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:
Utiliza el comando gcloud compute project-info add-metadata
para agregar claves SSH desde meta.txt
a 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".
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.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)