hacktricks/network-services-pentesting/nfs-service-pentesting.md
2023-06-03 13:10:46 +00:00

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.

Tutoriel sympa sur 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 🎥