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

141 lines
8.9 KiB
Markdown
Raw Normal View History

# 2049 - Pentesting NFS Service
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
2023-06-03 13:10:46 +00:00
## **Informations de base**
2022-04-28 16:01:33 +00:00
**NFS** est un système conçu pour le **client/serveur** qui permet aux utilisateurs d'accéder facilement à des fichiers sur un réseau comme si ces fichiers étaient situés dans un répertoire local.
2022-04-28 16:01:33 +00:00
Un aspect notable de ce protocole est son absence de **mécanismes d'authentification** ou d'**autorisation** intégrés. 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 par le système de fichiers, suivant principalement la **syntaxe UNIX**.
L'authentification repose généralement sur les **identifiants `UID`/`GID` UNIX et les appartenances à des groupes**. Cependant, un défi se pose en raison du potentiel décalage dans les **mappings `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 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, elle nécessite juste 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
- **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 le **plus ancien** de la série, il a jeté les bases pour les développements futurs.
2022-10-02 19:15:35 +00:00
- **NFSv3** : Introduit avec une gamme d'améliorations, NFSv3 s'est étendu par rapport à son prédécesseur en prenant en charge des tailles de fichiers variables et en offrant de meilleurs mécanismes de rapport d'erreurs. Malgré ses avancées, il a rencontré des limitations en matière de compatibilité totale avec les clients NFSv2.
- **NFSv4** : Une version marquante de la série NFS, NFSv4 a apporté un ensemble 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 portmappers, 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 performance et l'adoption d'un protocole orienté état distinguent NFSv4 comme une avancée majeure 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 la performance.
## Enumeration
### Useful nmap scripts
```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
```
### Mounting
Pour savoir **quel dossier** le serveur a **disponible** pour le monter, vous pouvez lui demander en utilisant :
```bash
showmount -e <IP>
```
Puis montez-le en utilisant :
```bash
mount -t nfs [-o vers=2] <ip>:<remote_folder> <local_folder> -o nolock
```
Vous devez spécifier d'**utiliser la version 2** car elle n'a **aucune** **authentification** ni **autorisation**.
**Exemple :**
```bash
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 uniquement accessibles 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 facilement l'UID et le GID afin d'accéder aux fichiers, vous pouvez utiliser [nfsshell](https://github.com/NetDirect/nfsshell).
[Tutoriel NFSShell intéressant.](https://www.pentestpartners.com/security-blog/using-nfsshell-to-compromise-older-environments/)
## Config files
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
- **Permissions de lecture et d'écriture (`rw`):** Ce paramètre permet à la fois la lecture et l'écriture dans 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'il est activé, cela permet au système d'utiliser des ports au-dessus de 1024. La sécurité des ports au-dessus de cette plage peut être moins stricte, augmentant le risque.
- **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é en dessous d'un répertoire exporté. Chaque répertoire nécessite sa propre entrée d'exportation pour une gestion appropriée.
- **Propriété des fichiers root (`no_root_squash`):** Avec ce paramètre, les fichiers créés par l'utilisateur root conservent leur UID/GID d'origine de 0, ignorant le principe du moindre privilège et pouvant accorder des permissions excessives.
2022-10-02 19:15:35 +00:00
- **Non-squash de tous les utilisateurs (`no_all_squash`):** Cette option garantit que les identités des utilisateurs sont préservées à travers le système, ce qui pourrait entraîner des problèmes de permissions et de contrôle d'accès si ce n'est pas correctement géré.
2022-10-02 19:15:35 +00:00
## Escalade de privilèges utilisant des mauvaises configurations NFS
[NFS no\_root\_squash et no\_all\_squash escalade de privilèges](../linux-hardening/privilege-escalation/nfs-no\_root\_squash-misconfiguration-pe.md)
2021-08-12 12:55:42 +00:00
## HackTricks Commandes automatiques
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: |
NFS is a system designed for client/server that enables users to seamlessly access files over a network as though these files were located within a local 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
```
{% hint style="success" %}
Apprenez et pratiquez le Hacking AWS :<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Formation Expert Red Team AWS (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Apprenez et pratiquez le Hacking GCP : <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Formation Expert Red Team GCP (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
<summary>Soutenir HackTricks</summary>
2022-04-28 16:01:33 +00:00
* Consultez les [**plans d'abonnement**](https://github.com/sponsors/carlospolop)!
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Partagez des astuces de hacking en soumettant des PRs aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}