GCP - Add Custom SSH Metadata

GCP - Ajouter des métadonnées SSH personnalisées

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)!

Autres façons de soutenir HackTricks :

Modification des métadonnées

La modification des métadonnées sur une instance pourrait entraîner des risques de sécurité importants si un attaquant obtient les autorisations nécessaires.

Incorporation de clés SSH dans les métadonnées personnalisées

Sur GCP, les systèmes Linux exécutent souvent des scripts à partir de l'Environnement invité Linux Python pour Google Compute Engine. Un composant critique de cela est le démon des comptes, qui est conçu pour vérifier régulièrement le point de terminaison des métadonnées de l'instance pour les mises à jour des clés publiques SSH autorisées.

Par conséquent, si un attaquant peut modifier les métadonnées personnalisées, il pourrait faire en sorte que le démon trouve une nouvelle clé publique, qui sera traitée et intégrée dans le système local. La clé sera ajoutée dans le fichier ~/.ssh/authorized_keys d'un utilisateur existant ou potentiellement créer un nouvel utilisateur avec des privilèges sudo, en fonction du format de la clé. Et l'attaquant pourra compromettre l'hôte.

Ajouter une clé SSH à un utilisateur privilégié existant

  1. Examiner les clés SSH existantes sur l'instance :

  • Exécutez la commande pour décrire l'instance et ses métadonnées afin de localiser les clés SSH existantes. La section pertinente dans la sortie se trouvera sous metadata, en particulier la clé ssh-keys.

gcloud compute instances describe [INSTANCE] --zone [ZONE]
  • Faites attention au format des clés SSH : le nom d'utilisateur précède la clé, séparé par un deux-points.

  1. Préparer un fichier texte pour les métadonnées de clé SSH :

  • Enregistrez les détails des noms d'utilisateur et de leurs clés SSH correspondantes dans un fichier texte nommé meta.txt. Cela est essentiel pour conserver les clés existantes tout en ajoutant de nouvelles.

  1. Générer une nouvelle clé SSH pour l'utilisateur cible (alice dans cet exemple) :

  • Utilisez la commande ssh-keygen pour générer une nouvelle clé SSH, en veillant à ce que le champ de commentaire (-C) corresponde au nom d'utilisateur cible.

ssh-keygen -t rsa -C "alice" -f ./key -P "" && cat ./key.pub
  • Ajoutez la nouvelle clé publique à meta.txt, en imitant le format trouvé dans les métadonnées de l'instance.

  1. Mettre à jour les métadonnées de clé SSH de l'instance :

  • Appliquez les métadonnées de clé SSH mises à jour à l'instance en utilisant la commande gcloud compute instances add-metadata.

gcloud compute instances add-metadata [INSTANCE] --metadata-from-file ssh-keys=meta.txt
  1. Accéder à l'instance en utilisant la nouvelle clé SSH :

  • Connectez-vous à l'instance avec SSH en utilisant la nouvelle clé, accédant à l'interpréteur de commandes dans le contexte de l'utilisateur cible (alice dans cet exemple).

ssh -i ./key alice@localhost
sudo id

Créer un nouvel utilisateur privilégié et ajouter une clé SSH

Si aucun utilisateur intéressant n'est trouvé, il est possible d'en créer un nouveau auquel seront accordés des privilèges 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

Clés SSH au niveau du projet

Il est possible d'élargir la portée de l'accès SSH à plusieurs Machines Virtuelles (VMs) dans un environnement cloud en appliquant des clés SSH au niveau du projet. Cette approche permet l'accès SSH à n'importe quelle instance dans le projet qui n'a pas explicitement bloqué les clés SSH au niveau du projet. Voici un guide résumé :

  1. Appliquer des Clés SSH au Niveau du Projet :

  • Utilisez la commande gcloud compute project-info add-metadata pour ajouter les clés SSH du fichier meta.txt aux métadonnées du projet. Cette action garantit que les clés SSH sont reconnues sur toutes les VMs du projet, sauf si une VM a activé l'option "Bloquer les clés SSH au niveau du projet".

gcloud compute project-info add-metadata --metadata-from-file ssh-keys=meta.txt
  1. Accéder aux Instances en Utilisant les Clés au Niveau du Projet :

  • Avec les clés SSH au niveau du projet en place, vous pouvez accéder en SSH à n'importe quelle instance dans le projet. Les instances qui ne bloquent pas les clés au niveau du projet accepteront la clé SSH, accordant ainsi l'accès.

  • Une méthode directe pour accéder en SSH à une instance est d'utiliser la commande gcloud compute ssh [INSTANCE]. Cette commande utilise votre nom d'utilisateur actuel et les clés SSH définies au niveau du projet pour tenter l'accès.

Références

Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!

Autres façons de soutenir HackTricks :

Dernière mise à jour