NFS (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
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 :
/mnt/nfs 10.129.14.0/24(sync,no_subtree_check)
Options courantes :
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
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
echo '/mnt/nfs 10.129.14.0/24(sync,no_subtree_check)' >> /etc/exports
systemctl restart nfs-kernel-server
exportfs
đ° Scanner le service avec Nmap
nmap -p111,2049 -sV -sC <IP CIBLE>
nmap --script nfs* -p111,2049 <IP CIBLE>
đ Lister les partages
showmount -e <IP CIBLE>
đ Monter un partage NFS
mkdir target-NFS
sudo mount -t nfs <IP CIBLE>:/ ./target-NFS/ -o nolock
đ Visualiser droits et propriĂ©taires
ls -l mnt/nfs/ # Avec noms
ls -n mnt/nfs/ # Avec UID/GID
â DĂ©monter le partage
cd ..
sudo umount ./target-NFS
đ 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.
$ showmount -e aca.htb
Export list for aca.htb:
/var/nfs 10.0.0.0/8
/mnt/nfsshare 10.0.0.0/8
Ici, nous allons devoir récupérer le contenu de /var/nfs
:
$ sudo mount -t nfs 10.129.120.130:/var/nfs ./target-NFS/ -o nolock
$ ls target-NFS/
flag.txt
$ cat target-NFS/flag.txt
HTB{hjglmvtkjhlkfuhgi734zthrie7rjmdze}
Maintenant le fichier récupéré, nous observons son contenu et observons le FLAG associé :
HTB{hjglmvtkjhlkfuhgi734zthrie7rjmdze}
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 :
$ sudo umount target-NFS
Ensuite, nous rĂ©alisons les mĂȘme Ă©tapes que prĂ©cĂ©demment :
$ sudo mount -t nfs 10.129.120.130:/mnt/nfsshare ./target-NFS/ -o nolockââ[eu-academy-1]â[10.10.14.141]â[htb-ac-1811357@htb-t6qemtokxr]â[~]
$ cat target-NFS/flag.txt
HTB{8o7435zhtuih7fztdrzuhdhkfjcn7ghi4357ndcthzuc7rtfghu34}
Nous obtenons ainsi le contenu du fichier flag.txt
dans nfsshare
:
HTB{8o7435zhtuih7fztdrzuhdhkfjcn7ghi4357ndcthzuc7rtfghu34}
Mis Ă jour