Accueil » Comprendre internet » L'accès à distance par SSH

L'accès à distance par SSH

 

Côté client par mot de passe :

 

SSH signifie SecureSHell. c'est un protocole permettant la connexion chiffrée entre un serveur et son client. Pour l'instant nous allons nous situer du côté du client, cela va  vous servir pour vos CTF d'une part parce que l'accès aux machines cibles (comme dans Hackthebox) se font en SSH (sauf si vous avez souscrit un abonnement vous pourrez alors utiliser la Pwnbox sans vous soucier de ce protocole), certains exercices deTryhackMe utilisent également ce protocole mais surtout car vous allez beaucoup l'utiliser pour tenter de transférer des fichiers via ssh vers votre machine lors de vos attaques.

 

Il faut savoir que l'authentification peut se faire par mot de passe ou par clef. Ici nous verrons la connexion par mot de passe.

 

Pour illustrer ces explications nous allons nous rendre sur un CTF de http://pwnable.kr, il s'agit d'une plateforme gratuite d'entraînement à l'exploitation. Vous pouvez essayez en même temps il vous suffit de créer un compte, la présentation est assez enfantine mais le CTF est bien sérieux...vous allez voir. Le concepteur  a une chaîne youtube : Adam Doupé très complète et d'un niveau très avancé.

 

 

Prenons le premier exercice (fd) pour File Descriptor, un descripteur de fichier est une clé abstraite pour accéder à un fichier.

 

 

Ici clairement Adam nous invite en temps que client à nous connecter via ssh avec un serveur appelé pwnable.kr sur le port 2222 (signifie cette porte est ouverte sur pwnable.kr pour un protocole ssh avec un login c'est à dire un identifiant qui est fd et enfin il nous donne le mot de passe de connexion qui est "guest".

 

Dans tous les cas vous devez avoir installer openssh sur vos système, pour Linux et MacOS cette fonctionnalité est incluse et pour windows tapez dans la barre de recherche fonctionnalité facultative puis vous verrez Client OpenSSH et vérifiez que cette fonctionnalité est bien installée.

 

 

Ensuite à partir du terminal ou du CMD (rappel mdp=guest)

 

 

Bravo vous y êtes, c'est à dire que vous avez un shell sécurisé avec le serveur pwnable.kr, en effet l'invite de commande du shell est maintenant fd@pwnable.kr

 

Nous sommes maintenant connectés en tant que fd sur la machine pwnable.kr, le caractère ~ (tild) indique que nous sommes dans le répertoire personnel (home) et $ indique que vous n'avez pas tous les droits sur cette machine (ce qui est bien normal).

 

Maintenant tentons de résoudre ce CTF:

 

Commençons par explorer les fichiers :

 

 

Ici j'aimerais ouvrir le dossier fd mais seul rgv[1] a number LETMEWIN est en clair, impossible de l’exécuter normalement intéressons nous à la ligne du dossier fd

 

-r-sr-x--- 1 fd_pwn  fd   7322 Jun 11 2014 fd

 

et surtout à -r-sr-x--- c'est primordial en réalité vous avez 10 entrée ici ---------- qui se décomposent en - puis --- puis --- puis ---, c'est à dire un tiret seul puis trois groupes distincts de tirets de trois tirets.     -   ---   ---   ---

 

 

Dossier peut être vide (-) si c'est in fichier ou bien plein (d) si c'est un dossier

Utilisateur peut contenir r pour READ, un w pour WRITE, ou x pour Execute

Groupe aussi

Autres aussi

 

Tout dépend quels droits ont été donnés par l'administrateur du serveur.

Ici nous constatons que fd comporte un s (qui correspond à suid) c'est à dire que l'administrateur a donné à la commande de ce fichier des privilèges élevés lorsqu'elle est exécutée par un utilisateur normal (afin de résoudre ce challenge je suppose).

 

Essayons maintenant fd.c avec la commande cat fd.c qui est un fichier .c c'est à dire qu'il s'agit d'un code écrit dans le language C

 

 

Nous avons ici plusieurs indication sur le fonctionnement du code,

 

Si nous exécutons fd sans argument il doit nous retourner : pass argv[1] a number, essayons :

 

 

C'est bien ça

 

Ce code donne plusieurs indication sur l’exécution de fd, il est codé pour nous inciter à rentrer un argument après ./fd qui doit être un nombre, soit nous rentrons le bon nombre (0X1234) soit le mauvais, le problème est que le nombre indiqué est en hexadécimale

 

Essayons quand même 0X1234

 

 

Ici l'auteur nous incite à nous renseigner sur les fichier I/O, il s'agit du contrôle des accès de certains fichiers, qu'ils soient en écriture ou en lecture (on parle d' “I/O” en anglais pour “Input/Output”, ou E/S “Entrée/Sortie” en bon français. En gros je pense qu'il veut nous dire par là qu'il faut l'exécuter autrement .

 

La solution réside dans la traduction de 0X1234 afin d'avoir un nombre exprimé en décimale.

 

Une simple recherche sur google en tapant 0X1234 nous revèle que cela fait 4660 en décimale

 

Essayons :

 

 

Ensuite il faut taper LETMEWIN ça, c'est écrit dans le code(regardez bien).

 

Et voilà il exécute bien fd et nous avons le flag qui est : mommy! I think I know what a file descriptor is!!

 

 

Et voilà et tout ça en ssh directement sur le serveur cible pwnable.kr en accès par mot de passe.