hacktricks/network-services-pentesting/nfs-service-pentesting.md

135 lines
9.8 KiB
Markdown
Raw Normal View History

# 2049 - Test d'intrusion du service NFS
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* Travaillez-vous dans une **entreprise de cybersécurité**? Vous voulez voir votre **entreprise annoncée dans HackTricks**? ou voulez-vous avoir accès à la **dernière version du PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au [dépôt hacktricks](https://github.com/carlospolop/hacktricks) et au [dépôt hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
</details>
2023-06-03 13:10:46 +00:00
## **Informations de base**
2022-04-28 16:01:33 +00:00
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 se trouvaient dans un répertoire de fichiers local. Il a le même but que SMB mais ne peut pas communiquer avec SMB.
2022-04-28 16:01:33 +00:00
Le protocole NFS n'a **aucun mécanisme d'authentification** ou d'**autorisation**. L'autorisation est obtenue à partir des informations disponibles du système de fichiers où le serveur est responsable de traduire les informations d'utilisateur fournies par le **client** en celles du **système de fichiers** et de convertir les 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 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 devrait être utilisé qu'avec cette méthode d'authentification dans des **réseaux de confiance**.
**Port par défaut**: 2049/TCP/UDP (sauf la version 4, qui nécessite uniquement TCP ou UDP).&#x20;
2022-05-01 13:25:53 +00:00
```
2049/tcp open nfs 2-3 (RPC #100003
```
2022-10-02 19:15:35 +00:00
### Versions
(From [https://academy.hackthebox.com/module/112/section/1068](https://academy.hackthebox.com/module/112/section/1068))
2022-10-02 19:15:35 +00:00
| **Version** | **Caractéristiques** |
2022-10-02 19:15:35 +00:00
| ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `NFSv2` | C'est **plus ancien** mais est pris en charge par de nombreux systèmes et était initialement entièrement exploité via UDP. |
| `NFSv3` | Il offre plus de fonctionnalités, y compris la taille de fichier variable et un meilleur rapport d'erreurs, mais n'est pas entièrement compatible avec les clients NFSv2. |
| `NFSv4` | Il inclut Kerberos, fonctionne à travers les pare-feu et sur Internet, **ne nécessite plus de mappage de ports**, prend en charge les ACL, applique des opérations basées sur l'état, offre des améliorations de performances et une haute **sécurité**. C'est également la première version à avoir un protocole étatique. |
2023-06-03 13:10:46 +00:00
## Énumération
2023-06-03 13:10:46 +00:00
### Scripts nmap utiles
```bash
nfs-ls #List NFS exports and check permissions
nfs-showmount #Like showmount -e
nfs-statfs #Disk statistics and info from NFS share
```
### Modules Metasploit utiles
```bash
scanner/nfs/nfsmount #Scan NFS mounts and list permissions
```
2023-06-03 13:10:46 +00:00
### Montage
Pour savoir **quel dossier** le serveur a **disponible** pour le montage, vous pouvez le demander en utilisant :
```bash
showmount -e <IP>
```
Ensuite, montez-le en utilisant :
```bash
mount -t nfs [-o vers=2] <ip>:<remote_folder> <local_folder> -o nolock
```
Vous devriez spécifier d'**utiliser la version 2** car elle n'a **aucune** **authentification** ou **autorisation**.
**Exemple :**
```bash
mkdir /mnt/new_back
mount -t nfs [-o vers=2] 10.12.0.150:/backup /mnt/new_back -o nolock
```
## Autorisations
Si vous montez un dossier qui contient des **fichiers ou dossiers accessibles uniquement par certains utilisateurs** (par **UID**), vous pouvez **créer** **localement** un utilisateur avec cet **UID** et en utilisant cet **utilisateur**, vous pourrez **accéder** au fichier/dossier.
2022-05-01 13:25:53 +00:00
## NSFShell
Pour lister, monter et changer l'UID et le GID pour avoir accès aux fichiers, vous pouvez utiliser [nfsshell](https://github.com/NetDirect/nfsshell).
2023-06-03 13:10:46 +00:00
[Tutoriel sympa sur NFSShell.](https://www.pentestpartners.com/security-blog/using-nfsshell-to-compromise-older-environments/)
2023-06-03 13:10:46 +00:00
## Fichiers de configuration
2022-05-01 13:25:53 +00:00
```
/etc/exports
/etc/lib/nfs/etab
```
2023-06-03 13:10:46 +00:00
### Paramètres dangereux
2023-06-03 13:10:46 +00:00
(De [https://academy.hackthebox.com/module/112/section/1068](https://academy.hackthebox.com/module/112/section/1068))
2022-10-02 19:15:35 +00:00
| **Option** | **Description** |
| ---------------- | -------------------------------------------------------------------------------------------------------------------- |
2023-06-03 13:10:46 +00:00
| `rw` | Autorisations de lecture et d'écriture. |
| `insecure` | Les ports supérieurs à 1024 seront utilisés. |
| `nohide` | Si un autre système de fichiers était monté sous un répertoire exporté, ce répertoire est exporté par sa propre entrée d'exports. |
2023-06-03 13:10:46 +00:00
| `no_root_squash` | Tous les fichiers créés par root sont conservés avec l'UID/GID 0. |
2022-10-02 19:15:35 +00:00
| `no_all_squash` | |
2023-06-03 13:10:46 +00:00
## Élévation de privilèges en utilisant des erreurs de configuration NFS
[Élévation de privilèges avec les erreurs de configuration NFS no\_root\_squash et no\_all\_squash](../linux-hardening/privilege-escalation/nfs-no\_root\_squash-misconfiguration-pe.md)
2021-08-12 12:55:42 +00:00
2023-06-03 13:10:46 +00:00
## Commandes automatiques HackTricks
2022-05-01 13:25:53 +00:00
```
2021-08-12 12:55:42 +00:00
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
2021-08-15 17:39:13 +00:00
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.
2021-08-15 17:39:13 +00:00
#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
2021-08-12 12:55:42 +00:00
https://book.hacktricks.xyz/pentesting/nfs-service-pentesting
2021-08-12 12:55:42 +00:00
2021-08-15 17:39:13 +00:00
Entry_2:
Name: Nmap
Description: Nmap with NFS Scripts
Command: nmap --script=nfs-ls.nse,nfs-showmount.nse,nfs-statfs.nse -p 2049 {IP}
2021-08-12 12:55:42 +00:00
```
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
* 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 du PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
2023-06-03 13:10:46 +00:00
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux dépôts [hacktricks](https://github.com/carlospolop/hacktricks) et [hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
2022-04-28 16:01:33 +00:00
</details>