2049 - Pentesting NFS Service
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).
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
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.
Montowanie
Aby dowiedzieć się, który folder na serwerze jest dostępny do zamontowania, możesz zapytać o to używając:
Następnie zamontuj go za pomocą:
Powinieneś określić, żeby używać wersji 2, ponieważ nie posiada żadnej autoryzacji ani uwierzytelniania.
Przykład:
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.
Pliki konfiguracyjne
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
Automatyczne polecenia HackTricks
Last updated