# 2049 - Pentesting NFS Service
{% hint style="success" %}
Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks
* 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.
{% endhint %}
## **Основна інформація**
**NFS** - це система, розроблена для **клієнт/сервер**, яка дозволяє користувачам безперешкодно отримувати доступ до файлів через мережу, ніби ці файли знаходяться в локальному каталозі.
Помітним аспектом цього протоколу є відсутність вбудованих **механізмів аутентифікації** або **авторизації**. Натомість авторизація покладається на **інформацію файлової системи**, при цьому сервер відповідає за точний переклад **інформації про користувача, наданої клієнтом**, у необхідний **формат авторизації** файлової системи, переважно слідуючи **синтаксису UNIX**.
Аутентифікація зазвичай покладається на **ідентифікатори `UID`/`GID` UNIX та членство в групах**. Однак виникає проблема через потенційне невідповідність у **відображеннях `UID`/`GID`** між клієнтами та серверами, що не залишає місця для додаткової перевірки з боку сервера. Внаслідок цього протокол найкраще підходить для використання в **достовірних мережах**, враховуючи його залежність від цього методу аутентифікації.
**Порт за замовчуванням**: 2049/TCP/UDP (за винятком версії 4, вона просто потребує TCP або UDP).
```
2049/tcp open nfs 2-3 (RPC #100003
```
### Версії
- **NFSv2**: Ця версія відзначається широкою сумісністю з різними системами, що підкреслює її значення з початковими операціями переважно через UDP. Будучи **найстарішою** у серії, вона заклала основу для подальших розробок.
- **NFSv3**: Введена з рядом покращень, NFSv3 розширила можливості свого попередника, підтримуючи змінні розміри файлів і пропонуючи покращені механізми звітності про помилки. Незважаючи на свої досягнення, вона стикалася з обмеженнями в повній зворотній сумісності з клієнтами NFSv2.
- **NFSv4**: Важлива версія в серії NFS, NFSv4 представила набір функцій, призначених для модернізації обміну файлами через мережі. Помітні покращення включають інтеграцію Kerberos для **високої безпеки**, можливість проходження через брандмауери та роботи через Інтернет без необхідності в портмапперах, підтримку списків контролю доступу (ACL) та впровадження операцій на основі стану. Її покращення продуктивності та впровадження протоколу збереження стану відрізняють NFSv4 як важливий крок вперед у технологіях обміну файлами в мережі.
Кожна версія NFS була розроблена з метою задовольнити еволюційні потреби мережевих середовищ, поступово покращуючи безпеку, сумісність і продуктивність.
## Перерахування
### Корисні скрипти nmap
```bash
nfs-ls #List NFS exports and check permissions
nfs-showmount #Like showmount -e
nfs-statfs #Disk statistics and info from NFS share
```
### Корисні модулі metasploit
```bash
scanner/nfs/nfsmount #Scan NFS mounts and list permissions
```
### Mounting
Щоб дізнатися, **яка папка** доступна на сервері для монтування, ви можете запитати її за допомогою:
```bash
showmount -e
```
Тоді змонтуйте його, використовуючи:
```bash
mount -t nfs [-o vers=2] : -o nolock
```
Ви повинні вказати **використовувати версію 2**, оскільки вона не має **жодної** **автентифікації** або **авторизації**.
**Приклад:**
```bash
mkdir /mnt/new_back
mount -t nfs [-o vers=2] 10.12.0.150:/backup /mnt/new_back -o nolock
```
## Permissions
Якщо ви змонтуєте папку, яка містить **файли або папки, доступні лише деяким користувачам** (за **UID**). Ви можете **створити** **локально** користувача з цим **UID** і, використовуючи цього **користувача**, ви зможете **доступитися** до файлу/папки.
## NSFShell
Щоб легко перерахувати, змонтувати та змінити UID і GID для доступу до файлів, ви можете використовувати [nfsshell](https://github.com/NetDirect/nfsshell).
[Гарний туторіал по NFSShell.](https://www.pentestpartners.com/security-blog/using-nfsshell-to-compromise-older-environments/)
## Config files
```
/etc/exports
/etc/lib/nfs/etab
```
### Небезпечні налаштування
- **Дозволи на читання та запис (`rw`):** Це налаштування дозволяє як читання, так і запис у файлову систему. Важливо враховувати наслідки надання такого широкого доступу.
- **Використання небезпечних портів (`insecure`):** Коли це увімкнено, система може використовувати порти вище 1024. Безпека портів вище цього діапазону може бути менш суворою, що збільшує ризик.
- **Видимість вкладених файлових систем (`nohide`):** Це налаштування робить каталоги видимими, навіть якщо інша файлова система змонтована нижче експортованого каталогу. Кожен каталог потребує власного запису експорту для належного управління.
- **Власність файлів root (`no_root_squash`):** З цим налаштуванням файли, створені користувачем root, зберігають свій оригінальний UID/GID 0, ігноруючи принцип найменших привілеїв і потенційно надаючи надмірні дозволи.
- **Несквашування всіх користувачів (`no_all_squash`):** Ця опція забезпечує збереження ідентичностей користувачів по всій системі, що може призвести до проблем з дозволами та контролем доступу, якщо не буде належним чином оброблено.
## Підвищення привілеїв за допомогою неправильних налаштувань NFS
[NFS no\_root\_squash та no\_all\_squash підвищення привілеїв](../linux-hardening/privilege-escalation/nfs-no\_root\_squash-misconfiguration-pe.md)
## HackTricks Автоматичні команди
```
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
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.
#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
https://book.hacktricks.xyz/pentesting/nfs-service-pentesting
Entry_2:
Name: Nmap
Description: Nmap with NFS Scripts
Command: nmap --script=nfs-ls.nse,nfs-showmount.nse,nfs-statfs.nse -p 2049 {IP}
```
{% hint style="success" %}
Вивчайте та практикуйте AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Вивчайте та практикуйте GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Підтримайте HackTricks
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
{% endhint %}