mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-26 22:52:06 +00:00
153 lines
11 KiB
Markdown
153 lines
11 KiB
Markdown
|
# 2049 - Pentesting Servicio NFS
|
||
|
|
||
|
<details>
|
||
|
|
||
|
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||
|
|
||
|
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||
|
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección de exclusivos [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||
|
* Consigue el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
|
||
|
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||
|
* **Comparte tus trucos de hacking enviando PRs al [repositorio de hacktricks](https://github.com/carlospolop/hacktricks) y al [repositorio de hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||
|
|
||
|
</details>
|
||
|
|
||
|
## **Información Básica**
|
||
|
|
||
|
Es un sistema cliente/servidor que permite a los usuarios acceder a archivos a través de una red y tratarlos como si estuvieran en un directorio de archivos local. Tiene el mismo propósito que SMB, pero no puede comunicarse con SMB.
|
||
|
|
||
|
El protocolo NFS **no tiene mecanismo de autenticación** ni de **autorización**. La autorización se toma de la información disponible del sistema de archivos donde el servidor es responsable de traducir la información de usuario suministrada por el cliente a la del sistema de archivos y convertir la información de autorización correspondiente de la manera más correcta posible en la sintaxis requerida por UNIX.
|
||
|
|
||
|
La **autenticación más común es a través de `UID`/`GID` de UNIX y `pertenencia a grupos`**, por lo que es probable que se aplique esta sintaxis al protocolo NFS. Un problema es que el **cliente** y el **servidor** **no necesariamente** tienen que tener los **mismos mapeos de UID/GID** a usuarios y grupos. No se pueden hacer más comprobaciones por parte del servidor. Por esta razón, NFS solo debe usarse con este método de autenticación en **redes de confianza**.
|
||
|
|
||
|
**Puerto predeterminado**: 2049/TCP/UDP (excepto la versión 4, que solo necesita TCP o UDP). 
|
||
|
```
|
||
|
2049/tcp open nfs 2-3 (RPC #100003
|
||
|
```
|
||
|
### Versiones
|
||
|
|
||
|
(De [https://academy.hackthebox.com/module/112/section/1068](https://academy.hackthebox.com/module/112/section/1068))
|
||
|
|
||
|
| **Versión** | **Características** |
|
||
|
| ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||
|
| `NFSv2` | Es **más antigua** pero es compatible con muchos sistemas y se operaba inicialmente completamente sobre UDP. |
|
||
|
| `NFSv3` | Tiene más características, incluyendo tamaño de archivo variable y mejor reporte de errores, pero no es completamente compatible con clientes NFSv2. |
|
||
|
| `NFSv4` | Incluye Kerberos, funciona a través de firewalls e Internet, **ya no requiere portmappers**, soporta ACLs, aplica operaciones basadas en estado, y provee mejoras de rendimiento y alta **seguridad**. También es la primera versión en tener un protocolo con estado. |
|
||
|
|
||
|
## Enumeración
|
||
|
|
||
|
### Scripts útiles de nmap
|
||
|
```bash
|
||
|
nfs-ls #List NFS exports and check permissions
|
||
|
nfs-showmount #Like showmount -e
|
||
|
nfs-statfs #Disk statistics and info from NFS share
|
||
|
```
|
||
|
### Módulos útiles de Metasploit
|
||
|
|
||
|
- `auxiliary/scanner/nfs/nfs_showmount`: Este módulo se utiliza para mostrar los puntos de montaje NFS compartidos en un servidor remoto.
|
||
|
|
||
|
- `auxiliary/scanner/nfs/nfs_enum`: Este módulo se utiliza para enumerar los archivos y directorios compartidos en un servidor NFS remoto.
|
||
|
|
||
|
- `auxiliary/scanner/nfs/nfsmount`: Este módulo se utiliza para montar un recurso NFS compartido en el sistema local.
|
||
|
|
||
|
- `exploit/linux/nfs/nfs_trunc`: Este módulo se utiliza para explotar una vulnerabilidad de truncamiento de archivos en el servicio NFS.
|
||
|
|
||
|
- `exploit/linux/nfs/nfsd`: Este módulo se utiliza para explotar una vulnerabilidad de desbordamiento de búfer en el servicio NFS.
|
||
|
|
||
|
- `exploit/solaris/nfs/nfs_readdirplus`: Este módulo se utiliza para explotar una vulnerabilidad de desbordamiento de búfer en el servicio NFS en sistemas Solaris.
|
||
|
|
||
|
- `exploit/solaris/nfs/nfs_ilist`: Este módulo se utiliza para explotar una vulnerabilidad de desbordamiento de búfer en el servicio NFS en sistemas Solaris.
|
||
|
|
||
|
- `exploit/solaris/nfs/nfs_share`: Este módulo se utiliza para explotar una vulnerabilidad de desbordamiento de búfer en el servicio NFS en sistemas Solaris.
|
||
|
|
||
|
- `exploit/solaris/nfs/nfs_symlink`: Este módulo se utiliza para explotar una vulnerabilidad de desbordamiento de búfer en el servicio NFS en sistemas Solaris.
|
||
|
```bash
|
||
|
scanner/nfs/nfsmount #Scan NFS mounts and list permissions
|
||
|
```
|
||
|
### Montaje
|
||
|
|
||
|
Para saber **qué carpeta** tiene el servidor **disponible** para montar, puedes preguntar usando:
|
||
|
```bash
|
||
|
showmount -e <IP>
|
||
|
```
|
||
|
Entonces, montarlo usando:
|
||
|
```bash
|
||
|
mount -t nfs [-o vers=2] <ip>:<remote_folder> <local_folder> -o nolock
|
||
|
```
|
||
|
Deberías especificar que **se use la versión 2** porque no tiene **ninguna** **autenticación** ni **autorización**.
|
||
|
|
||
|
**Ejemplo:**
|
||
|
```bash
|
||
|
mkdir /mnt/new_back
|
||
|
mount -t nfs [-o vers=2] 10.12.0.150:/backup /mnt/new_back -o nolock
|
||
|
```
|
||
|
## Permisos
|
||
|
|
||
|
Si montas una carpeta que contiene **archivos o carpetas solo accesibles por algún usuario** (por **UID**). Puedes **crear** **localmente** un usuario con ese **UID** y usando ese **usuario** podrás **acceder** al archivo/carpeta.
|
||
|
|
||
|
## NSFShell
|
||
|
|
||
|
Para listar, montar y cambiar UID y GID fácilmente para tener acceso a archivos, puedes usar [nfsshell](https://github.com/NetDirect/nfsshell).
|
||
|
|
||
|
[Tutorial de NFSShell muy útil.](https://www.pentestpartners.com/security-blog/using-nfsshell-to-compromise-older-environments/)
|
||
|
|
||
|
## Archivos de configuración
|
||
|
```
|
||
|
/etc/exports
|
||
|
/etc/lib/nfs/etab
|
||
|
```
|
||
|
### Configuraciones peligrosas
|
||
|
|
||
|
(De [https://academy.hackthebox.com/module/112/section/1068](https://academy.hackthebox.com/module/112/section/1068))
|
||
|
|
||
|
| **Opción** | **Descripción** |
|
||
|
| ---------------- | -------------------------------------------------------------------------------------------------------------------- |
|
||
|
| `rw` | Permisos de lectura y escritura. |
|
||
|
| `insecure` | Se utilizarán puertos por encima de 1024. |
|
||
|
| `nohide` | Si se montó otro sistema de archivos debajo de un directorio exportado, este directorio se exporta mediante su propia entrada de exportación. |
|
||
|
| `no_root_squash` | Todos los archivos creados por root se mantienen con el UID/GID 0. |
|
||
|
| `no_all_squash` | |
|
||
|
|
||
|
## Escalada de privilegios usando configuraciones incorrectas de NFS
|
||
|
|
||
|
[Escalada de privilegios NFS no\_root\_squash y no\_all\_squash](../linux-hardening/privilege-escalation/nfs-no\_root\_squash-misconfiguration-pe.md)
|
||
|
|
||
|
## Comandos automáticos de HackTricks
|
||
|
```
|
||
|
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: |
|
||
|
It is a client/server system that allows users to access files across a network and treat them as if they resided in a local file 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.xyz/pentesting/nfs-service-pentesting
|
||
|
|
||
|
Entry_2:
|
||
|
Name: Nmap
|
||
|
Description: Nmap with NFS Scripts
|
||
|
Command: nmap --script=nfs-ls.nse,nfs-showmount.nse,nfs-statfs.nse -p 2049 {IP}
|
||
|
```
|
||
|
<details>
|
||
|
|
||
|
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||
|
|
||
|
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||
|
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||
|
* Obtén la [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||
|
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) **grupo de Discord** o al [**grupo de telegram**](https://t.me/peass) o **sígueme en Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||
|
* **Comparte tus trucos de hacking enviando PRs al [repositorio de hacktricks](https://github.com/carlospolop/hacktricks) y al [repositorio de hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||
|
|
||
|
</details>
|