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
1098e77304
commit
439aecb9c3
@ -6,14 +6,14 @@ NFS fera généralement (surtout sous Linux) confiance au `uid` et `gid` indiqu
|
||||
|
||||
- **`all_squash`** : Cela écrase tous les accès en mappant chaque utilisateur et groupe à **`nobody`** (65534 non signé / -2 signé). Par conséquent, tout le monde est `nobody` et aucun utilisateur n'est utilisé.
|
||||
- **`root_squash`/`no_all_squash`** : C'est la valeur par défaut sur Linux et **n'écrase que l'accès avec uid 0 (root)**. Par conséquent, tout `UID` et `GID` sont de confiance, mais `0` est écrasé à `nobody` (donc aucune usurpation de root n'est possible).
|
||||
- **`no_root_squash`** : Cette configuration, si elle est activée, n'écrase même pas l'utilisateur root. Cela signifie que si vous montez un répertoire avec cette configuration, vous pouvez y accéder en tant que root.
|
||||
- **``no_root_squash`** : Cette configuration, si elle est activée, n'écrase même pas l'utilisateur root. Cela signifie que si vous montez un répertoire avec cette configuration, vous pouvez y accéder en tant que root.
|
||||
|
||||
Dans le fichier **/etc/exports**, si vous trouvez un répertoire configuré comme **no_root_squash**, alors vous pouvez **y accéder** en tant que **client** et **écrire à l'intérieur** de ce répertoire **comme** si vous étiez le **root** local de la machine.
|
||||
|
||||
Pour plus d'informations sur **NFS**, consultez :
|
||||
|
||||
{{#ref}}
|
||||
/network-services-pentesting/nfs-service-pentesting.md
|
||||
../../network-services-pentesting/nfs-service-pentesting.md
|
||||
{{#endref}}
|
||||
|
||||
# Escalade de privilèges
|
||||
@ -56,8 +56,8 @@ cd <SHAREDD_FOLDER>
|
||||
|
||||
> [!NOTE]
|
||||
> Notez que si vous pouvez créer un **tunnel de votre machine à la machine victime, vous pouvez toujours utiliser la version distante pour exploiter cette élévation de privilèges en tunnelant les ports requis**.\
|
||||
> Le truc suivant est au cas où le fichier `/etc/exports` **indique une IP**. Dans ce cas, vous **ne pourrez pas utiliser** en aucun cas l'**exploit distant** et vous devrez **abuser de ce truc**.\
|
||||
> Une autre exigence requise pour que l'exploit fonctionne est que **l'exportation à l'intérieur de `/etc/export`** **doit utiliser le drapeau `insecure`**.\
|
||||
> Le truc suivant est dans le cas où le fichier `/etc/exports` **indique une IP**. Dans ce cas, vous **ne pourrez pas utiliser** en aucun cas l'**exploitation distante** et vous devrez **abuser de ce truc**.\
|
||||
> Une autre exigence requise pour que l'exploitation fonctionne est que **l'exportation à l'intérieur de `/etc/export`** **doit utiliser le drapeau `insecure`**.\
|
||||
> --_Je ne suis pas sûr que si `/etc/export` indique une adresse IP, ce truc fonctionnera_--
|
||||
|
||||
## Basic Information
|
||||
|
@ -6,7 +6,7 @@
|
||||
|
||||
**NFS** est un système conçu pour **client/serveur** qui permet aux utilisateurs d'accéder facilement à des fichiers sur un réseau comme si ces fichiers étaient situés dans un répertoire local.
|
||||
|
||||
**Port par défaut** : 2049/TCP/UDP (sauf la version 4, elle nécessite juste TCP ou UDP).
|
||||
**Port par défaut** : 2049/TCP/UDP (sauf la version 4, il nécessite juste TCP ou UDP).
|
||||
```
|
||||
2049/tcp open nfs 2-3 (RPC #100003
|
||||
```
|
||||
@ -14,9 +14,9 @@
|
||||
|
||||
Un aspect notable de ce protocole est son absence habituelle de mécanismes d'**authentification** ou d'**autorisation** intégrés. Au lieu de cela, l'autorisation repose sur les **informations du système de fichiers**, le serveur étant chargé de traduire avec précision les **informations utilisateur fournies par le client** dans le format **d'autorisation** requis par le système de fichiers, suivant principalement la **syntaxe UNIX**.
|
||||
|
||||
L'authentification repose généralement sur les **identifiants `UID`/`GID` UNIX et les appartenances à des groupes**. Cependant, un défi se pose en raison du potentiel décalage dans les **mappings `UID`/`GID`** entre les clients et les serveurs, ne laissant aucune place à une vérification supplémentaire par le serveur. De plus, ces détails sont envoyés par le client et sont de confiance pour le serveur, donc un client malveillant pourrait potentiellement **usurper un autre utilisateur en envoyant des `uid` et `gid` plus privilégiés**.
|
||||
L'authentification repose généralement sur les **identifiants `UID`/`GID` UNIX et les appartenances à des groupes**. Cependant, un défi se pose en raison du potentiel décalage dans les **mappages `UID`/`GID`** entre les clients et les serveurs, ne laissant aucune place à une vérification supplémentaire par le serveur. De plus, ces détails sont envoyés par le client et sont de confiance pour le serveur, donc un client malveillant pourrait potentiellement **usurper un autre utilisateur en envoyant des `uid` et `gid` plus privilégiés**.
|
||||
|
||||
**Cependant, notez qu'il n'est pas possible par défaut d'usurper le `UID` 0 (root) en utilisant NFS. Plus d'informations à ce sujet dans la section de squashing.**
|
||||
**Cependant, notez qu'il n'est pas possible par défaut d'usurper le `UID` 0 (root) en utilisant NFS. Plus d'informations à ce sujet dans la section sur le squashing.**
|
||||
|
||||
#### Hôtes
|
||||
|
||||
@ -29,11 +29,11 @@ As you can see, cela permet de configurer une **IP** ou un **nom d'hôte** spéc
|
||||
|
||||
### Versions
|
||||
|
||||
- **NFSv2** : Cette version est reconnue pour sa large compatibilité avec divers systèmes, marquant son importance avec des opérations initiales principalement sur UDP. Étant la **plus ancienne** de la série, elle a jeté les bases des développements futurs.
|
||||
- **NFSv2** : Cette version est reconnue pour sa large compatibilité avec divers systèmes, marquant son importance avec des opérations initiales principalement sur UDP. Étant la **plus ancienne** de la série, elle a jeté les bases pour les développements futurs.
|
||||
|
||||
- **NFSv3** : Introduit avec une série d'améliorations, NFSv3 a élargi son prédécesseur en prenant en charge des tailles de fichiers variables et en offrant de meilleurs mécanismes de rapport d'erreurs. Malgré ses avancées, il a rencontré des limitations en matière de compatibilité totale avec les clients NFSv2.
|
||||
|
||||
- **NFSv4** : Une version marquante de la série NFS, NFSv4 a apporté un ensemble de fonctionnalités conçues pour moderniser le partage de fichiers à travers les réseaux. Les améliorations notables incluent l'intégration de Kerberos pour une **haute sécurité**, la capacité de traverser les pare-feu et de fonctionner sur Internet sans avoir besoin de portmappers, le support des listes de contrôle d'accès (ACL), et l'introduction d'opérations basées sur l'état. Ses améliorations de performance et l'adoption d'un protocole orienté état distinguent NFSv4 comme une avancée majeure dans les technologies de partage de fichiers en réseau.
|
||||
- **NFSv4** : Une version marquante de la série NFS, NFSv4 a apporté un ensemble de fonctionnalités conçues pour moderniser le partage de fichiers à travers les réseaux. Les améliorations notables incluent l'intégration de Kerberos pour une **sécurité élevée**, la capacité de traverser les pare-feu et de fonctionner sur Internet sans avoir besoin de portmappers, le support des listes de contrôle d'accès (ACL), et l'introduction d'opérations basées sur l'état. Ses améliorations de performance et l'adoption d'un protocole orienté état distinguent NFSv4 comme une avancée majeure dans les technologies de partage de fichiers en réseau.
|
||||
- Notez qu'il est très étrange de trouver un hôte Linux NFS prenant en charge l'authentification kerberos.
|
||||
|
||||
Chaque version de NFS a été développée dans le but de répondre aux besoins évolutifs des environnements réseau, améliorant progressivement la sécurité, la compatibilité et la performance.
|
||||
@ -48,7 +48,7 @@ Comme mentionné précédemment, NFS fera généralement confiance au `uid` et a
|
||||
|
||||
### Subtree check
|
||||
|
||||
Disponible uniquement sur Linux. man(5) exports dit : "Si un sous-répertoire d'un système de fichiers est exporté, mais que l'ensemble du système de fichiers ne l'est pas, alors chaque fois qu'une demande NFS arrive, le serveur doit vérifier non seulement que le fichier accédé se trouve dans le système de fichiers approprié (ce qui est facile) mais aussi qu'il se trouve dans l'arbre exporté (ce qui est plus difficile). Cette vérification est appelée la vérification de sous-arbre."
|
||||
Disponible uniquement sur Linux. man(5) exports dit : "Si un sous-répertoire d'un système de fichiers est exporté, mais que l'ensemble du système de fichiers ne l'est pas, alors chaque fois qu'une requête NFS arrive, le serveur doit vérifier non seulement que le fichier accédé est dans le système de fichiers approprié (ce qui est facile) mais aussi qu'il est dans l'arbre exporté (ce qui est plus difficile). Cette vérification est appelée la vérification de sous-arbre."
|
||||
|
||||
Dans Linux, la **fonctionnalité `subtree_check` est désactivée** par défaut.
|
||||
|
||||
@ -57,7 +57,7 @@ Dans Linux, la **fonctionnalité `subtree_check` est désactivée** par défaut.
|
||||
### Showmount
|
||||
|
||||
Cela peut être utilisé pour **obtenir des informations d'un serveur NFSv3**, comme la liste des **exports**, qui est **autorisé à accéder** à ces exports, et quels clients sont connectés (ce qui peut être inexact si un client se déconnecte sans informer le serveur).
|
||||
Dans **NFSv4, les clients accèdent directement au / export** et essaient d'accéder aux exports à partir de là, échouant si c'est invalide ou non autorisé pour une raison quelconque.
|
||||
Dans **NFSv4, les clients accèdent directement au /export** et essaient d'accéder aux exports à partir de là, échouant si c'est invalide ou non autorisé pour une raison quelconque.
|
||||
|
||||
Si des outils comme `showmount` ou des modules Metasploit ne montrent pas d'informations d'un port NFS, c'est potentiellement un serveur NFSv4 qui ne prend pas en charge la version 3.
|
||||
```bash
|
||||
@ -69,7 +69,7 @@ nfs-ls #List NFS exports and check permissions
|
||||
nfs-showmount #Like showmount -e
|
||||
nfs-statfs #Disk statistics and info from NFS share
|
||||
```
|
||||
### Modules Metasploit Utiles
|
||||
### Modules Metasploit utiles
|
||||
```bash
|
||||
scanner/nfs/nfsmount #Scan NFS mounts and list permissions
|
||||
```
|
||||
@ -77,9 +77,10 @@ scanner/nfs/nfsmount #Scan NFS mounts and list permissions
|
||||
|
||||
Cet outil de [https://github.com/hvs-consulting/nfs-security-tooling](https://github.com/hvs-consulting/nfs-security-tooling) peut être utilisé pour obtenir beaucoup de données d'un serveur NFS comme **les montages**, les versions NFS prises en charge, les IP connectées, et même s'il est possible de **s'échapper des exports** vers d'autres dossiers dans le FS ou **si `no_root_squash` est activé**.
|
||||
|
||||
|
||||
## Mounting
|
||||
|
||||
Pour savoir **quel dossier** le serveur a **disponible** pour le monter, vous pouvez lui demander en utilisant :
|
||||
Pour savoir **quel dossier** le serveur a **disponible** à monter, vous pouvez lui demander en utilisant :
|
||||
```bash
|
||||
showmount -e <IP>
|
||||
```
|
||||
@ -108,7 +109,7 @@ Bien sûr, le seul problème ici est qu'il n'est pas possible par défaut d'usur
|
||||
Consultez la page :
|
||||
|
||||
{{#ref}}
|
||||
/linux-hardening/privilege-escalation/nfs-no_root_squash-misconfiguration-pe.md
|
||||
../linux-hardening/privilege-escalation/nfs-no_root_squash-misconfiguration-pe.md
|
||||
{{#endref}}
|
||||
|
||||
### Évasion des exports
|
||||
@ -127,7 +128,7 @@ L'outil **`nfs_analyze`** de [https://github.com/hvs-consulting/nfs-security-too
|
||||
|
||||
Pour lister, monter et changer facilement UID et GID afin d'accéder aux fichiers, vous pouvez utiliser [nfsshell](https://github.com/NetDirect/nfsshell).
|
||||
|
||||
[Tutoriel NFSShell intéressant.](https://www.pentestpartners.com/security-blog/using-nfsshell-to-compromise-older-environments/)
|
||||
[Tutoriel NFSShell sympa.](https://www.pentestpartners.com/security-blog/using-nfsshell-to-compromise-older-environments/)
|
||||
|
||||
## Fichiers de configuration
|
||||
```
|
||||
@ -146,7 +147,7 @@ Pour lister, monter et changer facilement UID et GID afin d'accéder aux fichier
|
||||
|
||||
- **Non-squash de tous les utilisateurs (`no_all_squash`):** Cette option garantit que les identités des utilisateurs sont préservées à travers le système, ce qui pourrait entraîner des problèmes de permissions et de contrôle d'accès si ce n'est pas correctement géré.
|
||||
|
||||
## Escalade de privilèges utilisant des mauvaises configurations NFS
|
||||
## Escalade de privilèges utilisant des erreurs de configuration NFS
|
||||
|
||||
[NFS no_root_squash et no_all_squash escalade de privilèges](../linux-hardening/privilege-escalation/nfs-no_root_squash-misconfiguration-pe.md)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user