hacktricks/network-services-pentesting/nfs-service-pentesting.md
carlospolop 63bd9641c0 f
2023-06-05 20:33:24 +02:00

11 KiB

2049 - Pentesting Servicio NFS

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

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)

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

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.

scanner/nfs/nfsmount #Scan NFS mounts and list permissions

Montaje

Para saber qué carpeta tiene el servidor disponible para montar, puedes preguntar usando:

showmount -e <IP>

Entonces, montarlo usando:

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:

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.

Tutorial de NFSShell muy útil.

Archivos de configuración

/etc/exports
/etc/lib/nfs/etab

Configuraciones peligrosas

(De 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

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}
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥