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
f943c6cf03
commit
adb49b952e
@ -13,7 +13,7 @@ In die **/etc/exports** lêer, as jy 'n gids vind wat as **no_root_squash** geco
|
||||
Vir meer inligting oor **NFS** kyk:
|
||||
|
||||
{{#ref}}
|
||||
/network-services-pentesting/nfs-service-pentesting.md
|
||||
../../network-services-pentesting/nfs-service-pentesting.md
|
||||
{{#endref}}
|
||||
|
||||
# Privilege Escalation
|
||||
@ -66,7 +66,7 @@ Die scenario behels die eksploitering van 'n gemonteerde NFS deel op 'n plaaslik
|
||||
|
||||
### Kompilerings van die Biblioteek
|
||||
|
||||
Die biblioteek kompileringsstappe mag aanpassings vereis gebaseer op die kern weergawe. In hierdie spesifieke geval is die fallocate syscalls kommentaar gegee. Die kompileringsproses behels die volgende opdragte:
|
||||
Die biblioteek kompileringsstappe mag aanpassings vereis gebaseer op die kern weergawe. In hierdie spesifieke geval was die fallocate syscalls kommentaar gemaak. Die kompileringsproses behels die volgende opdragte:
|
||||
```bash
|
||||
./bootstrap
|
||||
./configure
|
||||
@ -95,9 +95,9 @@ LD_NFS_UID=0 LD_LIBRARY_PATH=./lib/.libs/ LD_PRELOAD=./ld_nfs.so chmod u+s nfs:/
|
||||
/mnt/share/a.out
|
||||
#root
|
||||
```
|
||||
## Bonus: NFShell vir Stealthy File Toegang
|
||||
## Bonus: NFShell vir Stealthy Lêertoegang
|
||||
|
||||
Sodra root-toegang verkry is, om met die NFS-aandeel te kommunikeer sonder om eienaarskap te verander (om te verhoed dat daar spore agtergelaat word), word 'n Python-skrip (nfsh.py) gebruik. Hierdie skrip pas die uid aan om te ooreenstem met dié van die lêer wat toegang verkry, wat interaksie met lêers op die aandeel moontlik maak sonder toestemmingkwessies:
|
||||
Sodra root-toegang verkry is, om met die NFS-aandeel te kommunikeer sonder om eienaarskap te verander (om te verhoed dat daar spore agtergelaat word), word 'n Python-skrip (nfsh.py) gebruik. Hierdie skrip pas die uid aan om te ooreenstem met dié van die lêer wat toegang verkry word, wat interaksie met lêers op die aandeel moontlik maak sonder toestemmingkwessies:
|
||||
```python
|
||||
#!/usr/bin/env python
|
||||
# script from https://www.errno.fr/nfs_privesc.html
|
||||
|
||||
@ -12,9 +12,9 @@
|
||||
```
|
||||
### Authentisering
|
||||
|
||||
'n Opmerklike aspek van hierdie protokol is die gewone gebrek aan ingeboude **authentisering** of **autorisasiemeganismes**. In plaas daarvan, berus autorisasie op **lêerstelselinligting**, met die bediener wat verantwoordelik is om **klant-gelewer gebruikersinligting** akkuraat in die lêerstelsel se vereiste **autorisasieformaat** te vertaal, hoofsaaklik volgens **UNIX-sintaksis**.
|
||||
'n Opmerklike aspek van hierdie protokol is die gewone gebrek aan ingeboude **authentisering** of **autorisasiemechanismes**. In plaas daarvan, berus autorisasie op **lêerstelselinligting**, met die bediener wat verantwoordelik is om **klant-gelewer gebruikersinligting** akkuraat in die lêerstelsel se vereiste **autorisasieformaat** te vertaal, hoofsaaklik volgens **UNIX-sintaksis**.
|
||||
|
||||
Authentisering 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 slegte kliënt potensieel kan **verteenwoordig** 'n ander gebruiker deur meer bevoorregte `uid` en `gid`s te stuur.
|
||||
Authentisering 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 kwaadwillige kliënt potensieel kan **verteenwoordig** 'n ander gebruiker deur meer bevoorregte `uid` en `gid`s te stuur.
|
||||
|
||||
**Let egter daarop dat dit standaard nie moontlik is om die `UID` 0 (root) te verteenwoordig nie met NFS. Meer oor hierdie in die squashing-afdeling.**
|
||||
|
||||
@ -33,7 +33,7 @@ As jy kan sien, dit laat toe om 'n spesifieke **IP** of **hostname** te konfigur
|
||||
|
||||
- **NFSv3**: Ingevoerd met 'n reeks verbeterings, het NFSv3 op sy voorganger uitgebrei deur veranderlike lêergrootte 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 reeks 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 oorsteek en oor die Internet te werk sonder die behoefte aan portmappers, ondersteuning vir Toegang Beheer Lyste (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ë.
|
||||
- **NFSv4**: 'n Mylpaalweergawe in die NFS-reeks, het NFSv4 'n stel 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 oorsteek en oor die Internet te werk sonder die behoefte aan portmappers, ondersteuning vir Toegang Beheer Lyste (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.
|
||||
@ -42,24 +42,24 @@ Elke weergawe van NFS is ontwikkel met die doel om die ontwikkelende behoeftes v
|
||||
|
||||
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 in die bediener gestel kan word om **hierdie gedrag te verander**:
|
||||
|
||||
- **all_squash**: Dit squash al die toegang wat elke gebruiker en groep na **`nobody`** (65534 unsigned / -2 signed) map. Daarom is almal `nobody` en geen gebruikers word gebruik nie.
|
||||
- **all_squash**: Dit squash al die toegang deur elke gebruiker en groep na **`nobody`** (65534 unsigned / -2 signed) te map. Daarom is almal `nobody` en 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 `UID` en `GID` vertrou, maar `0` word gesquash na `nobody` (so geen root-imperonering 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 benader.
|
||||
|
||||
### Subtree check
|
||||
|
||||
Slegs beskikbaar op Linux. man(5) exports sê: "As 'n subgids van 'n lêerstelsel ge-exporteer word, maar die hele lêerstelsel nie, dan moet die bediener wanneer 'n NFS-versoek aankom, nie net nagaan dat die benaderde lêer in die toepaslike lêerstelsel is (wat maklik is) nie, maar ook dat dit in die ge-exporteerde boom is (wat moeiliker is). Hierdie kontrole word die subtree check genoem."
|
||||
Slegs beskikbaar op Linux. man(5) exports sê: "As 'n subgids van 'n lêerstelsel ge-exporteer 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 ge-exporteerde boom is (wat moeiliker is). Hierdie kontrole word die subtree check genoem."
|
||||
|
||||
In Linux is die **`subtree_check`-kenmerk standaard gedeaktiveer**.
|
||||
In Linux is die **`subtree_check` funksie 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 benader net direk die / export** en probeer om exports van daar te benader, en misluk as dit ongeldig of nie geautoriseer is nie.
|
||||
Dit kan gebruik word om **inligting van 'n NFSv3 bediener te verkry**, soos die lys van **exports**, wie is **toegelaat om toegang te verkry** 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 het net direkte toegang 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 nie weergawe 3 ondersteun nie.
|
||||
As gereedskap soos `showmount` of Metasploit-modules nie inligting van 'n NFS-poort toon nie, is dit moontlik 'n NFSv4 bediener wat nie weergawe 3 ondersteun nie.
|
||||
```bash
|
||||
showmount -e <IP>
|
||||
```
|
||||
@ -87,7 +87,7 @@ Dan monteer dit met:
|
||||
```bash
|
||||
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 nie.
|
||||
U moet spesifiseer om **weergawe 2** te **gebruik** omdat dit **geen** **verifikasie** of **outorisering** het.
|
||||
|
||||
**Voorbeeld:**
|
||||
```bash
|
||||
@ -108,18 +108,18 @@ Natuurlik is die enigste probleem hier dat dit standaard nie moontlik is om root
|
||||
Kyk na die bladsy:
|
||||
|
||||
{{#ref}}
|
||||
/linux-hardening/privilege-escalation/nfs-no_root_squash-misconfiguration-pe.md
|
||||
../linux-hardening/privilege-escalation/nfs-no_root_squash-misconfiguration-pe.md
|
||||
{{#endref}}
|
||||
|
||||
### Ontsnapping van die exports
|
||||
|
||||
In hierdie [geweldige artikel](https://www.hvs-consulting.de/en/nfs-security-identifying-and-exploiting-misconfigurations/) 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**.
|
||||
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 deur 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 slegs die root (0) gebruiker standaard beskerm is teen na te boots (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 standaard te lees!
|
||||
Boonop, let daarop dat standaard slegs die root (0) gebruiker beskerm is teen na te boots (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 standaard te lees!
|
||||
|
||||
Die hulpmiddel **`nfs_analyze`** van [https://github.com/hvs-consulting/nfs-security-tooling](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).
|
||||
|
||||
@ -127,7 +127,7 @@ Die hulpmiddel **`nfs_analyze`** van [https://github.com/hvs-consulting/nfs-secu
|
||||
|
||||
Om maklik te lys, te monteer en UID en GID te verander om toegang tot lêers te hê, kan jy [nfsshell](https://github.com/NetDirect/nfsshell) gebruik.
|
||||
|
||||
[Nice NFSShell tutorial.](https://www.pentestpartners.com/security-blog/using-nfsshell-to-compromise-older-environments/)
|
||||
[Nice NFSShell tutoriaal.](https://www.pentestpartners.com/security-blog/using-nfsshell-to-compromise-older-environments/)
|
||||
|
||||
## Konfigurasie lêers
|
||||
```
|
||||
@ -140,15 +140,15 @@ Om maklik te lys, te monteer en UID en GID te verander om toegang tot lêers te
|
||||
|
||||
- **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.
|
||||
- **Sigbaarheid van Geneste Lêerstelsels (`nohide`):** Hierdie konfigurasie maak gidse sigbaar selfs as 'n ander lêerstelsel onder 'n geëksporteerde gids gemonteer is. 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.
|
||||
- **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 oortollige regte toeken.
|
||||
|
||||
- **Nie-Squashing van Alle Gebruikers (`no_all_squash`):** Hierdie opsie verseker dat gebruikersidentiteite oor die stelsel behou word, wat tot toestemming- en toegangbeheerprobleme kan lei as dit nie korrek hanteer word nie.
|
||||
- **Nie-Squashing van Alle Gebruikers (`no_all_squash`):** Hierdie opsie verseker dat gebruikersidentiteite oor die stelsel behou word, wat kan lei tot toestemming en toegangbeheer probleme as dit nie korrek hanteer word nie.
|
||||
|
||||
## Privilege Escalation met NFS misconfigurasies
|
||||
## Voorregverhoging deur NFS misconfigurasies
|
||||
|
||||
[NFS no_root_squash en no_all_squash privilege escalation](../linux-hardening/privilege-escalation/nfs-no_root_squash-misconfiguration-pe.md)
|
||||
[NFS no_root_squash en no_all_squash voorregverhoging](../linux-hardening/privilege-escalation/nfs-no_root_squash-misconfiguration-pe.md)
|
||||
|
||||
## HackTricks Outomatiese Opdragte
|
||||
```
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user