2049 - Pentesting NFS Service
Informations de base
NFS est un système conçu pour le client/serveur qui permet aux utilisateurs d'accéder de manière transparente aux fichiers sur un réseau comme s'ils se trouvaient dans un répertoire local.
Un aspect notable de ce protocole est son absence de mécanismes intégrés d'authentification ou d'autorisation. Au lieu de cela, l'autorisation repose sur les informations du système de fichiers, le serveur étant chargé de traduire avec précision les informations utilisateur fournies par le client dans le format d'autorisation requis du système de fichiers, suivant principalement la syntaxe UNIX.
L'authentification repose généralement sur les identifiants UNIX UID
/GID
et les appartenances aux groupes. Cependant, un défi se pose en raison du potentiel de divergence dans les correspondances UID
/GID
entre les clients et les serveurs, ne laissant aucune place à une vérification supplémentaire par le serveur. Par conséquent, le protocole est le mieux adapté à une utilisation au sein de réseaux de confiance, étant donné sa dépendance à cette méthode d'authentification.
Port par défaut: 2049/TCP/UDP (sauf la version 4, qui nécessite uniquement TCP ou UDP).
Versions
NFSv2: Cette version est reconnue pour sa large compatibilité avec divers systèmes, marquant son importance avec des opérations initiales principalement sur UDP. Étant la plus ancienne de la série, elle a posé les bases pour les développements futurs.
NFSv3: Introduite avec une série d'améliorations, NFSv3 a étendu son prédécesseur en prenant en charge des tailles de fichiers variables et en offrant des mécanismes améliorés de notification d'erreurs. Malgré ses avancées, elle a rencontré des limitations en termes de compatibilité ascendante complète avec les clients NFSv2.
NFSv4: Version phare de la série NFS, NFSv4 a apporté une série de fonctionnalités conçues pour moderniser le partage de fichiers à travers les réseaux. Les améliorations notables incluent l'intégration de Kerberos pour une sécurité élevée, la capacité de traverser les pare-feu et de fonctionner sur Internet sans avoir besoin de mappages de ports, le support des listes de contrôle d'accès (ACL), et l'introduction d'opérations basées sur l'état. Ses améliorations de performances et l'adoption d'un protocole étatique distinguent NFSv4 comme une avancée capitale dans les technologies de partage de fichiers en réseau.
Chaque version de NFS a été développée dans le but de répondre aux besoins évolutifs des environnements réseau, améliorant progressivement la sécurité, la compatibilité et les performances.
Énumération
Scripts nmap utiles
Modules Metasploit utiles
Montage
Pour savoir quel dossier le serveur a disponible pour le montage, vous pouvez le demander en utilisant :
Ensuite, montez-le en utilisant :
Vous devriez spécifier d'utiliser la version 2 car elle n'a aucune authentification ou autorisation.
Exemple:
Permissions
Si vous montez un dossier qui contient des fichiers ou 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, vous pouvez utiliser nfsshell.
Fichiers de configuration
Paramètres dangereux
Permissions de lecture et d'écriture (
rw
): Ce paramètre permet à la fois la lecture et l'écriture sur le système de fichiers. Il est essentiel de considérer les implications de l'octroi d'un accès aussi large.Utilisation de ports non sécurisés (
insecure
): Lorsqu'elle est activée, cela permet au système d'utiliser des ports supérieurs à 1024. La sécurité des ports au-dessus de cette plage peut être moins stricte, augmentant ainsi les risques.Visibilité des systèmes de fichiers imbriqués (
nohide
): Cette configuration rend les répertoires visibles même si un autre système de fichiers est monté sous un répertoire exporté. Chaque répertoire nécessite sa propre entrée d'exportation pour une gestion adéquate.Propriété des fichiers racine (
no_root_squash
): Avec ce paramètre, les fichiers créés par l'utilisateur root conservent leur UID/GID d'origine de 0, en ignorant le principe du moindre privilège et en accordant potentiellement des autorisations excessives.Non-écrasement de tous les utilisateurs (
no_all_squash
): Cette option garantit que les identités des utilisateurs sont préservées dans tout le système, ce qui pourrait entraîner des problèmes de contrôle des autorisations et d'accès s'ils ne sont pas correctement gérés.
É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
Last updated