# 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 %}