11 KiB
2049 - Pentesting Servicio NFS
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- ¿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!
- Descubre The PEASS Family, nuestra colección de exclusivos NFTs
- Consigue el swag oficial de PEASS y HackTricks
- Únete al 💬 grupo de Discord o al grupo de telegram o sígueme en Twitter 🐦@carlospolopm.
- Comparte tus trucos de hacking enviando PRs al repositorio de hacktricks y al repositorio de hacktricks-cloud.
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 🎥
- ¿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!
- Descubre The PEASS Family, nuestra colección exclusiva de NFTs
- Obtén la oficial PEASS & HackTricks swag
- Únete al 💬 grupo de Discord o al grupo de telegram o sígueme en Twitter 🐦@carlospolopm.
- Comparte tus trucos de hacking enviando PRs al repositorio de hacktricks y al repositorio de hacktricks-cloud.