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

175 lines
13 KiB
Markdown
Raw Normal View History

2023-06-03 13:10:46 +00:00
## **Informations de base**
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +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 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.
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
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.
2023-06-03 13:10:46 +00:00
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.
2023-06-03 13:10:46 +00:00
**Port par défaut**: 2049/TCP/UDP (sauf la version 4, qui a seulement besoin de TCP ou UDP). 
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
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
2023-06-03 13:10:46 +00:00
| **Version** | **Fonctionnalités** |
2022-10-02 19:15:35 +00:00
| ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
2023-06-03 13:10:46 +00:00
| `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. |
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
```
2023-06-03 13:10:46 +00:00
### 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.
2023-06-03 13:10:46 +00:00
- **exploit/multi/misc/sshexec**: This module allows you to execute commands on a remote system over SSH.
2023-06-03 13:10:46 +00:00
- **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.
```bash
scanner/nfs/nfsmount #Scan NFS mounts and list permissions
```
2023-06-03 13:10:46 +00:00
### Montage
2023-06-03 13:10:46 +00:00
Pour savoir **quel dossier** le serveur a **disponible** pour le montage, vous pouvez le demander en utilisant:
```bash
showmount -e <IP>
```
2023-06-03 13:10:46 +00:00
Ensuite, montez-le en utilisant:
```bash
mount -t nfs [-o vers=2] <ip>:<remote_folder> <local_folder> -o nolock
```
2023-06-03 13:10:46 +00:00
Vous devriez spécifier d'**utiliser la version 2** car elle ne possède **aucune** **authentification** ou **autorisation**.
2023-06-03 13:10:46 +00:00
**Exemple:**
```bash
mkdir /mnt/new_back
mount -t nfs [-o vers=2] 10.12.0.150:/backup /mnt/new_back -o nolock
```
2022-05-01 13:25:53 +00:00
## Permissions
2023-06-03 13:10:46 +00:00
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.
2022-05-01 13:25:53 +00:00
## NSFShell
2023-06-03 13:10:46 +00:00
Pour lister, monter et changer l'UID et le GID pour avoir accès aux fichiers facilement, 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 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. |
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
2023-06-03 13:10:46 +00:00
[Élévation de privilèges 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.
#apt install nfs-common
showmount 10.10.10.180 ~or~showmount -e 10.10.10.180
2021-08-12 12:55:42 +00:00
should show you available shares (example /home)
2021-08-15 17:39:13 +00:00
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
2021-08-15 17:39:13 +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
2021-09-19 09:07:30 +00:00
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
2023-06-03 13:10:46 +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 de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Découvrez [**The PEASS Family**](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** ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@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)**.
2022-04-28 16:01:33 +00:00
</details>