diagram-projectNFS (Network File System)

🧠 Introduction

Le Network File System (NFS) est un protocole développé par Sun Microsystems permettant d'accéder à des systèmes de fichiers distants comme s'ils étaient locaux. NFS est principalement utilisé dans les environnements Linux/Unix et ne peut pas communiquer directement avec des serveurs SMB. Il repose sur le protocole ONC-RPC/SUN-RPC, exposé sur les ports TCP/UDP 111, et utilise XDR pour garantir l'interopérabilité entre systèmes.

🧱 Versions du protocole

Version
Fonctionnalités principales

NFSv2

Fonctionne sur UDP, support étendu mais ancien.

NFSv3

Supporte fichiers de tailles variables, meilleurs rapports d'erreurs.

NFSv4

Authentification par utilisateur (Kerberos), support des ACLs, fonctionnement via firewall, opérations avec état, port unique 2049 TCP.

NFSv4.1

Support du multipathing (session trunking) et de l'accès parallèle distribué (pNFS).

🔐 Authentification & Sécurité

NFS ne dispose pas de mécanisme propre d'authentification. Il délègue cela à RPC (ONC-RPC). L'autorisation repose sur les UID/GID UNIX. Cela suppose que le client et le serveur partagent les mêmes mappages UID/GID, faute de quoi des incohérences d'accès peuvent apparaître.

NFS est donc recommandé uniquement dans des réseaux de confiance.

⚙️ Configuration par défaut

La configuration se fait via le fichier /etc/exports. Chaque ligne y indique :

  • Le répertoire exporté

  • Les hôtes autorisés

  • Les options d'accès

Exemple :

Options courantes :

Option
Description

rw

Lecture/écriture

ro

Lecture seule

sync

Écriture synchronisée (plus sûr mais plus lent)

async

Écriture asynchrone

secure

N'utilise que les ports < 1024

insecure

Autorise les ports > 1024 (dangereux)

no_subtree_check

Ne vérifie pas la hiérarchie interne des dossiers

root_squash

Empêche root d'avoir les droits root sur le montage

⚠️ Paramètres à risque

Option
Description

rw

Risque d'écriture malveillante si non contrôlée

insecure

Expose le service à des ports non privilégiés

nohide

Affiche les montages sous-jacents (potentielle fuite de données)

no_root_squash

Donne les droits root aux clients (extrêmement dangereux)

🧪 Commandes pratiques

🔧 Exporter un répertoire

📰 Scanner le service avec Nmap

🔍 Lister les partages

📁 Monter un partage NFS

🌐 Visualiser droits et propriétaires

❌ Démonter le partage

🔐 Escalade potentielle

Une mauvaise configuration (ex: no_root_squash) permet d'utiliser NFS pour copier des fichiers avec des droits élevés, injecter des scripts SUID ou exécuter des binaires sensibles. Le mapping UID/GID peut aussi être exploité si les identifiants du serveur sont répliqués localement.

📚 Ressources utiles


Enumerate the NFS service and submit the contents of the flag.txt in the "nfs" share as the answer.

Ici, nous allons devoir récupérer le contenu de /var/nfs :

Maintenant le fichier récupéré, nous observons son contenu et observons le FLAG associé :


Enumerate the NFS service and submit the contents of the flag.txt in the "nfsshare" share as the answer.

Afin d'obtenir le flag de nfsshare, nous devons en premier lieu unmount le précédent dossier :

Ensuite, nous réalisons les même étapes que précédemment :

Nous obtenons ainsi le contenu du fichier flag.txt dans nfsshare :


Last updated