# 2049 - Testowanie penetracyjne usługi NFS
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)! * Pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć swoją **firmę reklamowaną w HackTricks**? A może chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)! * Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family) * Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com) * **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do repozytorium [hacktricks](https://github.com/carlospolop/hacktricks) i [hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
## **Podstawowe informacje** **NFS** to system zaprojektowany dla **klient/serwer**, który umożliwia użytkownikom bezproblemowy dostęp do plików przez sieć, tak jakby te pliki znajdowały się w lokalnym katalogu. Należy zauważyć, że ten protokół nie posiada wbudowanych mechanizmów **uwierzytelniania** ani **autoryzacji**. Zamiast tego, autoryzacja opiera się na **informacjach o systemie plików**, a serwer ma za zadanie dokładnie przetłumaczyć **informacje o użytkowniku dostarczone przez klienta** na wymagany przez system plików **format autoryzacji**, przede wszystkim zgodnie z **składnią UNIX**. Uwierzytelnianie zwykle opiera się na **identyfikatorach `UID`/`GID` UNIX** i przynależności do grup. Jednak pojawia się wyzwanie związane z potencjalnym niezgodnymi **mapowaniami `UID`/`GID`** między klientami a serwerami, nie pozostawiając miejsca na dodatkową weryfikację przez serwer. W rezultacie, protokół ten najlepiej sprawdza się w **zaufanych sieciach**, ze względu na swoje poleganie na tej metodzie uwierzytelniania. **Domyślny port**: 2049/TCP/UDP (z wyjątkiem wersji 4, która wymaga tylko TCP lub UDP). ``` 2049/tcp open nfs 2-3 (RPC #100003 ``` ### Wersje - **NFSv2**: Ta wersja jest znana ze swojej szerokiej kompatybilności z różnymi systemami, co potwierdza jej znaczenie dzięki początkowym operacjom przeważnie realizowanym przez UDP. Jako **najstarsza** w serii, położyła podwaliny pod przyszłe rozwinięcia. - **NFSv3**: Wprowadzona z szeregiem ulepszeń, NFSv3 rozszerzyła swojego poprzednika, obsługując zmienne rozmiary plików i oferując ulepszone mechanizmy raportowania błędów. Pomimo swoich postępów, napotykała ograniczenia w pełnej kompatybilności wstecznej z klientami NFSv2. - **NFSv4**: Wersja przełomowa w serii NFS, NFSv4 przyniosła zestaw funkcji zaprojektowanych do nowoczesnego udostępniania plików w sieciach. Znaczące ulepszenia obejmują integrację Kerberosa dla **wysokiego poziomu bezpieczeństwa**, zdolność do przekraczania zapór ogniowych i działania w Internecie bez potrzeby portmapperów, obsługę list kontroli dostępu (ACL), oraz wprowadzenie operacji opartych na stanie. Jej ulepszenia wydajnościowe i przyjęcie protokołu stanowego wyróżniają NFSv4 jako przełomowy postęp w technologiach udostępniania plików w sieci. Każda wersja NFS została opracowana w celu zaspokojenia zmieniających się potrzeb środowisk sieciowych, stopniowo poprawiając bezpieczeństwo, kompatybilność i wydajność. ## Wyliczanie ### Przydatne skrypty nmap ```bash nfs-ls #List NFS exports and check permissions nfs-showmount #Like showmount -e nfs-statfs #Disk statistics and info from NFS share ``` ### Przydatne moduły metasploit Metasploit to potężne narzędzie do testowania penetracyjnego, które oferuje wiele modułów, które mogą być użyteczne podczas testowania usług sieciowych. Oto kilka przykładowych modułów, które warto znać: - `auxiliary/scanner/nfs/nfsmount` - Moduł ten pozwala na skanowanie i montowanie udziałów NFS. - `auxiliary/scanner/nfs/nfsenum` - Ten moduł umożliwia wykonywanie enumeracji usług NFS, takich jak listowanie katalogów i plików. - `auxiliary/scanner/nfs/nfs_showmount` - Moduł ten pozwala na wykonywanie zapytań showmount w celu uzyskania informacji o dostępnych udziałach NFS. - `auxiliary/scanner/nfs/nfs_statfs` - Ten moduł umożliwia pobieranie informacji statystycznych o udziałach NFS. - `exploit/linux/nfs/nfsd` - Moduł ten pozwala na zdalne wykonanie kodu na serwerze NFS poprzez wykorzystanie podatności w usłudze nfsd. Pamiętaj, że metasploit oferuje wiele innych modułów, które mogą być przydatne podczas testowania penetracyjnego usług sieciowych. ```bash scanner/nfs/nfsmount #Scan NFS mounts and list permissions ``` ### Montowanie Aby dowiedzieć się, **który folder** na serwerze jest **dostępny** do zamontowania, możesz zapytać o to używając: ```bash showmount -e ``` Następnie zamontuj go za pomocą: ```bash mount -t nfs [-o vers=2] : -o nolock ``` Powinieneś określić, żeby **używać wersji 2**, ponieważ nie posiada **żadnej** **autoryzacji** ani **uwierzytelniania**. **Przykład:** ```bash mkdir /mnt/new_back mount -t nfs [-o vers=2] 10.12.0.150:/backup /mnt/new_back -o nolock ``` ## Uprawnienia Jeśli zamontujesz folder, który zawiera **pliki lub foldery dostępne tylko dla określonego użytkownika** (za pomocą **UID**), możesz **lokalnie utworzyć** użytkownika o tym **UID** i używając tego użytkownika będziesz mógł **uzyskać dostęp** do pliku/folderu. ## NSFShell Aby łatwo wyświetlać, montować i zmieniać UID i GID w celu uzyskania dostępu do plików, możesz użyć [nfsshell](https://github.com/NetDirect/nfsshell). [Ładny samouczek NFSShell.](https://www.pentestpartners.com/security-blog/using-nfsshell-to-compromise-older-environments/) ## Pliki konfiguracyjne ``` /etc/exports /etc/lib/nfs/etab ``` ### Niebezpieczne ustawienia - **Uprawnienia do odczytu i zapisu (`rw`):** Ta opcja umożliwia zarówno odczyt, jak i zapis do systemu plików. Należy dokładnie rozważyć konsekwencje udzielenia tak szerokiego dostępu. - **Użycie niezabezpieczonych portów (`insecure`):** Po włączeniu tej opcji system może korzystać z portów powyżej 1024. Bezpieczeństwo portów powyżej tej wartości może być mniejsze, co zwiększa ryzyko. - **Widoczność zagnieżdżonych systemów plików (`nohide`):** Ta konfiguracja sprawia, że katalogi są widoczne nawet wtedy, gdy inny system plików jest zamontowany poniżej eksportowanego katalogu. Każdy katalog wymaga własnego wpisu eksportu dla prawidłowego zarządzania. - **Właścicielstwo plików roota (`no_root_squash`):** Ta opcja powoduje, że pliki utworzone przez użytkownika root zachowują swoje pierwotne UID/GID równa 0, ignorując zasadę najmniejszych uprawnień i potencjalnie nadając nadmierne uprawnienia. - **Brak tłumienia wszystkich użytkowników (`no_all_squash`):** Ta opcja zapewnia zachowanie tożsamości użytkowników w całym systemie, co może prowadzić do problemów z uprawnieniami i kontrolą dostępu, jeśli nie jest prawidłowo obsługiwana. ## Eskalacja uprawnień przy użyciu błędów konfiguracji NFS [Eskalacja uprawnień przy użyciu błędów konfiguracji NFS no\_root\_squash i no\_all\_squash](../linux-hardening/privilege-escalation/nfs-no\_root\_squash-misconfiguration-pe.md) ## Automatyczne polecenia 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} ```
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)! * Pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć swoją **firmę reklamowaną w HackTricks**? A może chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)! * Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family) * Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com) * **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do repozytorium [hacktricks](https://github.com/carlospolop/hacktricks) i [hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.