2049 - Pentesting NFS Service
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die đŹ Discord groep of die telegram groep of volg ons op Twitter đŠ @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
Basiese Inligting
NFS is ân stelsel wat ontwerp is vir klient/bediener wat gebruikers in staat stel om naatloos toegang tot lĂȘers oor ân netwerk te verkry asof hierdie lĂȘers in ân plaaslike gids geleĂ« is.
Standaard poort: 2049/TCP/UDP (behalwe weergawe 4, dit benodig net TCP of UDP).
2049/tcp open nfs 2-3 (RPC #100003
Outkenning
ân Opmerklike aspek van hierdie protokol is die gewoonlike gebrek aan ingeboude outkenning of magteigingsmeganismes. In plaas daarvan, berus magteiging op lĂȘerstelselinligting, met die bediener wat verantwoordelik is om klant-gelewer gebruikersinligting akkuraat in die lĂȘerstelsel se vereiste magteigingsformaat te vertaal, hoofsaaklik volgens UNIX-sintaksis.
Outkenning berus gewoonlik op UNIX UID/GID identifiseerders en groeplidmaatskappe. ân Uitdaging ontstaan egter weens die potensiĂ«le wanpassing in **UID/GID kaarte tussen kliĂ«nte en bedieners, wat geen ruimte laat vir addisionele verifikasie deur die bediener nie. Boonop word hierdie besonderhede deur die kliĂ«nt gestuur en deur die bediener vertrou, sodat ân onwettige kliĂ«nt potensieel kan verteenwoordig ân ander gebruiker deur meer bevoorregte uid en gids te stuur.
Let egter daarop dat dit standaard nie moontlik is om die UID 0 (root) te verteenwoordig met NFS nie. Meer hieroor in die squashing afdeling.
Gashere
Vir beter (of sommige) magteiging, kan jy die gashere spesifiseer wat toegang tot die NFS-aandeel kan hĂȘ. Dit kan gedoen word in die Linux /etc/exports lĂȘer. Byvoorbeeld:
/PATH/TO/EXPORTÂ Â Â Â Â CLIENT1(OPTIONS1) CLIENT2(OPTIONS2) ...
/media/disk/share  192.168.2.123(rw,sec=krb5p:krb5i)
As jy kan sien, laat dit toe om ân spesifieke IP of hostname te konfigureer om toegang tot die deel te verkry. Slegs daardie adres sal toegang tot die deel hĂȘ.
Weergawes
-
NFSv2: Hierdie weergawe word erken vir sy wye kompatibiliteit met verskeie stelsels, wat sy belangrikheid merk met aanvanklike bedrywighede hoofsaaklik oor UDP. As die oudste in die reeks, het dit die grondslag gelĂȘ vir toekomstige ontwikkelings.
-
NFSv3: Ingevoerd met ân reeks verbeterings, het NFSv3 op sy voorganger uitgebrei deur veranderlike lĂȘergroottes te ondersteun en verbeterde foutverslagmeganismes aan te bied. Ten spyte van sy vooruitgang, het dit beperkings in volle terugwaartse kompatibiliteit met NFSv2-kliĂ«nte ondervind.
-
NFSv4: ân Mylpaalweergawe in die NFS-reeks, het NFSv4 ân suite van funksies gebring wat ontwerp is om lĂȘerdeling oor netwerke te moderniseer. Opmerklike verbeterings sluit die integrasie van Kerberos vir hoĂ« sekuriteit, die vermoĂ« om vuurmure te oorkom en oor die Internet te werk sonder die behoefte aan portmappers, ondersteuning vir Toegangsbeheerlyste (ACLâs), en die bekendstelling van staat-gebaseerde bedrywighede in. Sy prestasieverbeterings en die aanneming van ân staatlike protokol onderskei NFSv4 as ân belangrike vooruitgang in netwerk lĂȘerdeling tegnologieĂ«.
-
Let daarop dat dit baie vreemd is om ân Linux-gasheer NFS te vind wat kerberos-verifikasie ondersteun.
Elke weergawe van NFS is ontwikkel met die doel om die ontwikkelende behoeftes van netwerkomgewings aan te spreek, wat progressief sekuriteit, kompatibiliteit en prestasie verbeter.
Squashing
Soos vroeĂ«r genoem, sal NFS gewoonlik die kliĂ«nt se uid en gid vertrou om toegang tot die lĂȘers te verkry (as kerberos nie gebruik word nie). Daar is egter ân paar konfigurasies wat op die bediener gestel kan word om hierdie gedrag te verander:
- all_squash: Dit squash al die toegang deur elke gebruiker en groep na
nobody(65534 unsigned / -2 signed) te map. Daarom is almalnobodyen geen gebruikers word gebruik nie. - root_squash/no_all_squash: Dit is die standaard op Linux en squash slegs toegang met uid 0 (root). Daarom word enige
UIDenGIDvertrou, maar0word nanobodygesquash (so geen root-imperonasie is moontlik nie). - no_root_squash: Hierdie konfigurasie, indien geaktiveer, squash nie eens die root-gebruiker nie. Dit beteken dat as jy ân gids met hierdie konfigurasie monteer, jy dit as root kan toegang.
Subtree check
Slegs beskikbaar op Linux. man(5) exports sĂȘ: âAs ân subgids van ân lĂȘerstelsel uitgevoer word, maar die hele lĂȘerstelsel nie, dan moet die bediener, wanneer ân NFS-versoek aankom, nie net nagaan dat die toeganklike lĂȘer in die toepaslike lĂȘerstelsel is (wat maklik is) nie, maar ook dat dit in die uitgevoerde boom is (wat moeiliker is). Hierdie kontrole word die subtree check genoem.â
In Linux is die subtree_check-kenmerk standaard gedeaktiveer.
Enumerasie
Showmount
Dit kan gebruik word om inligting van ân NFSv3-bediener te verkry, soos die lys van exports, wie toegang het tot hierdie exports, en watter kliĂ«nte verbind is (wat dalk onakkuraat kan wees as ân kliĂ«nt ontkoppel sonder om die bediener te vertel). In NFSv4 kliĂ«nte toegang direk tot die /export en probeer om van daar af toegang tot exports te verkry, wat misluk as dit ongeldig of nie geautoriseer is nie.
As gereedskap soos showmount of Metasploit-modules nie inligting van ân NFS-poort toon nie, is dit moontlik ân NFSv4-bediener wat weergawe 3 nie ondersteun nie.
showmount -e <IP>
Nuttige nmap skripte
nfs-ls #List NFS exports and check permissions
nfs-showmount #Like showmount -e
nfs-statfs #Disk statistics and info from NFS share
Nuttige metasploit modules
scanner/nfs/nfsmount #Scan NFS mounts and list permissions
nfs_analyze
Hierdie hulpmiddel van https://github.com/hvs-consulting/nfs-security-tooling kan gebruik word om ân groot hoeveelheid data van ân NFS-bediener te verkry, soos mounts, ondersteunde NFS-weergawes, gekonnekteerde IPâs, en selfs of dit moontlik is om te ontsnap van die exports na ander vouers in die FS of of no_root_squash geaktiveer is.
Mounting
Om te weet watter vouer die bediener beskikbaar het om te monteer, kan jy dit vra met:
showmount -e <IP>
Dan monteer dit met:
mount -t nfs [-o vers=2] <ip>:<remote_folder> <local_folder> -o nolock
U moet spesifiseer om weergawe 2 te gebruik omdat dit geen verifikasie of outorisering het.
Voorbeeld:
mkdir /mnt/new_back
mount -t nfs [-o vers=2] 10.12.0.150:/backup /mnt/new_back -o nolock
Aanvalle
Vertroue UID en GID
Natuurlik is die enigste probleem hier dat dit nie moontlik is om root (UID 0) na te boots nie. Dit is egter moontlik om enige ander gebruiker na te boots of as no_root_squash geaktiveer is, kan jy ook root na boots.
- As jy ân gids monteer wat lĂȘers of gidse bevat wat slegs deur ân sekere gebruiker toeganklik is (deur UID). Jy kan lokal ân gebruiker met daardie UID skep en met daardie gebruiker sal jy in staat wees om die lĂȘer/gids te benader.
- Die hulpmiddel
fuse_nfsvan https://github.com/hvs-consulting/nfs-security-tooling sal basies altyd die nodige UID en GID stuur om toegang tot die lĂȘers te verkry.
SUID Privilege Escalation
Kyk na die bladsy:
NFS no_root_squash/no_all_squash misconfiguration PE
Ontsnapping van die exports
In hierdie geweldige artikel is dit moontlik om te sien dat dit moontlik is om te ontsnap van die exports om toegang tot ander gidse in die FS te verkry.
Daarom, as ân export ân gids exporteer wat ân subgids van die hele lĂȘerstelsel is, is dit moontlik om lĂȘers buite die export te benader as subtree_check gedeaktiveer is. En dit is gedeaktiveer per standaard in Linux.
Byvoorbeeld, as ân NFS-bediener /srv/ exporteer en /var/ in dieselfde lĂȘerstelsel is, is dit moontlik om logs van /var/log/ te lees of ân webshell in /var/www/ te stoor.
Boonop, let daarop dat per standaard slegs die root (0) gebruiker beskerm is teen na-botsing (kyk na die Squash afdeling). As ân lĂȘer aan root behoort maar die groep nie 0 is nie, is dit moontlik om toegang te verkry. Byvoorbeeld, die lĂȘer /etc/shadow behoort aan root maar die groep is shadow (gid 42 op Debian). Daarom is dit moontlik om dit per standaard te lees!
Die hulpmiddel nfs_analyze van https://github.com/hvs-consulting/nfs-security-tooling is gebou om hierdie aanval teen die lĂȘerstelsels ext4, xfs, btrfs in weergawe 3 te ondersteun (dit behoort ook moontlik te wees in v4).
NSFShell
Om maklik te lys, te monteer en UID en GID te verander om toegang tot lĂȘers te hĂȘ, kan jy nfsshell gebruik.
Konfigurasie lĂȘers
/etc/exports
/etc/lib/nfs/etab
Gevaarlike instellings
-
Lees- en Skryfregte (
rw): Hierdie instelling laat beide lees van en skryf na die lĂȘerstelsel toe. Dit is noodsaaklik om die implikasies van die toekenning van so ân breĂ« toegang in ag te neem. -
Gebruik van Onveilige Poorte (
insecure): Wanneer geaktiveer, laat dit die stelsel toe om poorte bo 1024 te gebruik. Die sekuriteit van poorte bo hierdie reeks kan minder streng wees, wat die risiko verhoog. -
Sigbaarheid van Geneste LĂȘerstelsels (
nohide): Hierdie konfigurasie maak gidse sigbaar selfs al is ân ander lĂȘerstelsel onder ân geĂ«ksporteerde gids gemonteer. Elke gids vereis sy eie uitvoerinskrywing vir behoorlike bestuur. -
Eienaarskap van WortellĂȘers (
no_root_squash): Met hierdie instelling behou lĂȘers wat deur die wortelgebruiker geskep is hul oorspronklike UID/GID van 0, wat die beginsel van die minste voorregte ignoreer en moontlik oormatige regte toeken. -
Nie-Squashing van Alle Gebruikers (
no_all_squash): Hierdie opsie verseker dat gebruikersidentiteite oor die stelsel bewaar word, wat kan lei tot toestemming en toegangbeheerprobleme as dit nie korrek hanteer word nie.
Privilege Escalation using NFS misconfigurations
NFS no_root_squash and no_all_squash privilege escalation
HackTricks Outomatiese Opdragte
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.wiki/en/network-services-pentesting/nfs-service-pentesting.html
Entry_2:
Name: Nmap
Description: Nmap with NFS Scripts
Command: nmap --script=nfs-ls.nse,nfs-showmount.nse,nfs-statfs.nse -p 2049 {IP}
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die đŹ Discord groep of die telegram groep of volg ons op Twitter đŠ @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
HackTricks

