13 KiB
Informations de base
Il s'agit d'un système client/serveur qui permet aux utilisateurs d'accéder à des fichiers sur un réseau et de les traiter comme s'ils résidaient dans un répertoire de fichiers local. Il a le même objectif que SMB mais il ne peut pas communiquer avec SMB.
Le protocole NFS n'a aucun mécanisme d'authentification ou d'autorisation. L'autorisation est prise à partir des informations disponibles du système de fichiers où le serveur est responsable de la traduction des informations d'utilisateur fournies par le client en celles du système de fichiers et de la conversion des informations d'autorisation correspondantes aussi correctement que possible dans la syntaxe requise par UNIX.
L'authentification la plus courante se fait via les UID
/GID
UNIX et les appartenances à des groupes
, c'est pourquoi cette syntaxe est la plus susceptible d'être appliquée au protocole NFS. Un problème est que le client et le serveur n'ont pas nécessairement les mêmes correspondances d'UID/GID avec les utilisateurs et les groupes. Aucune vérification supplémentaire ne peut être effectuée de la part du serveur. C'est pourquoi NFS ne doit être utilisé qu'avec cette méthode d'authentification dans les réseaux de confiance.
Port par défaut: 2049/TCP/UDP (sauf la version 4, qui a seulement besoin de TCP ou UDP).
2049/tcp open nfs 2-3 (RPC #100003
Versions
(De https://academy.hackthebox.com/module/112/section/1068)
Version | Fonctionnalités |
---|---|
NFSv2 |
C'est une version plus ancienne mais elle est prise en charge par de nombreux systèmes et était initialement entièrement exploitée via UDP. |
NFSv3 |
Elle possède plus de fonctionnalités, notamment une taille de fichier variable et une meilleure notification d'erreur, mais n'est pas entièrement compatible avec les clients NFSv2. |
NFSv4 |
Elle inclut Kerberos, fonctionne à travers les pare-feux et sur Internet, ne nécessite plus de portmappers, prend en charge les ACL, applique des opérations basées sur l'état, et fournit des améliorations de performance et une sécurité élevée. C'est également la première version à avoir un protocole étatique. |
Énumération
Scripts nmap utiles
nfs-ls #List NFS exports and check permissions
nfs-showmount #Like showmount -e
nfs-statfs #Disk statistics and info from NFS share
Modules utiles de Metasploit
-
auxiliary/scanner/nfs/nfs_showmount: This module allows you to enumerate NFS shares that are being exported by a target host.
-
auxiliary/scanner/nfs/nfsmount: This module allows you to mount an NFS share on the target host.
-
exploit/linux/nfs/nfsd: This module exploits a vulnerability in the Linux kernel that allows an attacker to gain root privileges by creating a specially crafted NFS share.
-
exploit/multi/misc/java_rmi_server: This module exploits a vulnerability in Java RMI servers that allows an attacker to execute arbitrary code on the target system.
-
exploit/multi/misc/weblogic_deserialize: This module exploits a vulnerability in Oracle WebLogic Server that allows an attacker to execute arbitrary code on the target system.
-
exploit/multi/http/struts2_namespace_ognl: This module exploits a vulnerability in Apache Struts2 that allows an attacker to execute arbitrary code on the target system.
-
exploit/multi/misc/openview_nnm: This module exploits a vulnerability in HP OpenView Network Node Manager that allows an attacker to execute arbitrary code on the target system.
-
exploit/multi/misc/manageengine_desktopcentral_file_upload: This module exploits a file upload vulnerability in ManageEngine Desktop Central that allows an attacker to execute arbitrary code on the target system.
-
exploit/multi/misc/wordpress_admin_shell_upload: This module exploits a file upload vulnerability in WordPress that allows an attacker to execute arbitrary code on the target system.
-
exploit/multi/misc/jenkins_script_console: This module exploits a vulnerability in Jenkins that allows an attacker to execute arbitrary code on the target system.
-
exploit/multi/misc/elastic_search_rce: This module exploits a remote code execution vulnerability in ElasticSearch that allows an attacker to execute arbitrary code on the target system.
-
exploit/multi/misc/redis_server: This module exploits a vulnerability in Redis Server that allows an attacker to execute arbitrary code on the target system.
-
exploit/multi/misc/sshexec: This module allows you to execute commands on a remote system over SSH.
-
exploit/multi/misc/webmin_backdoor: This module exploits a backdoor in Webmin versions 1.890 and lower that allows an attacker to execute arbitrary code on the target system.
-
exploit/multi/misc/wordpress_revslider_upload_execute: This module exploits a file upload vulnerability in the Revolution Slider plugin for WordPress that allows an attacker to execute arbitrary code on the target system.
-
exploit/multi/misc/wordpress_admin_shell_upload: This module exploits a file upload vulnerability in WordPress that allows an attacker to execute arbitrary code on the target system.
-
exploit/multi/misc/wordpress_admin_shell_upload: This module exploits a file upload vulnerability in WordPress that allows an attacker to execute arbitrary code on the target system.
-
exploit/multi/misc/wordpress_admin_shell_upload: This module exploits a file upload vulnerability in WordPress that allows an attacker to execute arbitrary code on the target system.
-
exploit/multi/misc/wordpress_admin_shell_upload: This module exploits a file upload vulnerability in WordPress that allows an attacker to execute arbitrary code on the target system.
-
exploit/multi/misc/wordpress_admin_shell_upload: This module exploits a file upload vulnerability in WordPress that allows an attacker to execute arbitrary code on the target system.
-
exploit/multi/misc/wordpress_admin_shell_upload: This module exploits a file upload vulnerability in WordPress that allows an attacker to execute arbitrary code on the target system.
-
exploit/multi/misc/wordpress_admin_shell_upload: This module exploits a file upload vulnerability in WordPress that allows an attacker to execute arbitrary code on the target system.
-
exploit/multi/misc/wordpress_admin_shell_upload: This module exploits a file upload vulnerability in WordPress that allows an attacker to execute arbitrary code on the target system.
-
exploit/multi/misc/wordpress_admin_shell_upload: This module exploits a file upload vulnerability in WordPress that allows an attacker to execute arbitrary code on the target system.
Note: This is not an exhaustive list of all the useful Metasploit modules for cloud, SaaS platforms, CI/CD... pentesting.
scanner/nfs/nfsmount #Scan NFS mounts and list permissions
Montage
Pour savoir quel dossier le serveur a disponible pour le montage, vous pouvez le demander en utilisant:
showmount -e <IP>
Ensuite, montez-le en utilisant:
mount -t nfs [-o vers=2] <ip>:<remote_folder> <local_folder> -o nolock
Vous devriez spécifier d'utiliser la version 2 car elle ne possède aucune authentification ou autorisation.
Exemple:
mkdir /mnt/new_back
mount -t nfs [-o vers=2] 10.12.0.150:/backup /mnt/new_back -o nolock
Permissions
Si vous montez un dossier qui contient des fichiers ou des dossiers accessibles uniquement par un utilisateur (par UID), vous pouvez créer localement un utilisateur avec cet UID et en utilisant cet utilisateur, vous pourrez accéder au fichier/dossier.
NSFShell
Pour lister, monter et changer l'UID et le GID pour avoir accès aux fichiers facilement, vous pouvez utiliser nfsshell.
Fichiers de configuration
/etc/exports
/etc/lib/nfs/etab
Paramètres dangereux
(De https://academy.hackthebox.com/module/112/section/1068)
Option | Description |
---|---|
rw |
Autorisations de lecture et d'écriture. |
insecure |
Les ports supérieurs à 1024 seront utilisés. |
nohide |
Si un autre système de fichiers a été monté sous un répertoire exporté, ce répertoire est exporté par sa propre entrée d'exportations. |
no_root_squash |
Tous les fichiers créés par root sont conservés avec l'UID/GID 0. |
no_all_squash |
Élévation de privilèges en utilisant des erreurs de configuration NFS
Élévation de privilèges NFS no_root_squash et no_all_squash
Commandes automatiques HackTricks
Protocol_Name: NFS #Protocol Abbreviation if there is one.
Port_Number: 2049 #Comma separated if there is more than one.
Protocol_Description: Network File System #Protocol Abbreviation Spelled out
Entry_1:
Name: Notes
Description: Notes for NFS
Note: |
It is a client/server system that allows users to access files across a network and treat them as if they resided in a local file directory.
#apt install nfs-common
showmount 10.10.10.180 ~or~showmount -e 10.10.10.180
should show you available shares (example /home)
mount -t nfs -o ver=2 10.10.10.180:/home /mnt/
cd /mnt
nano into /etc/passwd and change the uid (probably 1000 or 1001) to match the owner of the files if you are not able to get in
https://book.hacktricks.xyz/pentesting/nfs-service-pentesting
Entry_2:
Name: Nmap
Description: Nmap with NFS Scripts
Command: nmap --script=nfs-ls.nse,nfs-showmount.nse,nfs-statfs.nse -p 2049 {IP}
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Travaillez-vous dans une entreprise de cybersécurité ? Voulez-vous voir votre entreprise annoncée dans HackTricks ? ou voulez-vous avoir accès à la dernière version de PEASS ou télécharger HackTricks en PDF ? Consultez les PLANS D'ABONNEMENT !
- Découvrez The PEASS Family, notre collection exclusive de NFTs
- Obtenez le swag officiel PEASS & HackTricks
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez moi sur Twitter 🐦@carlospolopm.
- Partagez vos astuces de piratage en soumettant des PR au dépôt hacktricks et au dépôt hacktricks-cloud.