GCP - Add Custom SSH Metadata
Last updated
Last updated
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE) Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
La modification des métadonnées sur une instance pourrait entraîner des risques de sécurité significatifs si un attaquant obtient les autorisations nécessaires.
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 des 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 au fichier ~/.ssh/authorized_keys
d'un utilisateur existant ou potentiellement en créant un nouvel utilisateur avec des privilèges sudo
, selon le format de la clé. Et l'attaquant pourra compromettre l'hôte.
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 sera sous metadata
, spécifiquement la clé ssh-keys
.
Faites attention au format des clés SSH : le nom d'utilisateur précède la clé, séparé par un deux-points.
Préparer un fichier texte pour les métadonnées de la 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 préserver les clés existantes tout en ajoutant de nouvelles.
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.
Ajoutez la nouvelle clé publique à meta.txt
, en imitant le format trouvé dans les métadonnées de l'instance.
Mettre à jour les métadonnées de la 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
.
Accéder à l'instance en utilisant la nouvelle clé SSH :
Connectez-vous à l'instance avec SSH en utilisant la nouvelle clé, accédant au shell dans le contexte de l'utilisateur cible (alice
dans cet exemple).
Si aucun utilisateur intéressant n'est trouvé, il est possible d'en créer un nouveau qui se verra attribuer des privilèges sudo
:
Il est possible d'élargir l'accès SSH à plusieurs machines virtuelles (VM) dans un environnement cloud en appliquant des clés SSH au niveau du projet. Cette approche permet l'accès SSH à toute instance au sein du projet qui n'a pas explicitement bloqué les clés SSH à l'échelle du projet. Voici un guide résumé :
Appliquer des clés SSH au niveau du projet :
Utilisez la commande gcloud compute project-info add-metadata
pour ajouter des clés SSH depuis meta.txt
aux métadonnées du projet. Cette action garantit que les clés SSH sont reconnues sur toutes les VM du projet, sauf si une VM a l'option "Bloquer les clés SSH à l'échelle du projet" activée.
SSH dans les instances en utilisant des clés à l'échelle du projet :
Avec des clés SSH à l'échelle du projet en place, vous pouvez SSH dans n'importe quelle instance au sein du projet. Les instances qui ne bloquent pas les clés à l'échelle du projet accepteront la clé SSH, accordant l'accès.
Une méthode directe pour SSH dans 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 d'accéder.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)