2049 - Pentesting NFS Service
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
NFS es un sistema diseñado para cliente/servidor que permite a los usuarios acceder a archivos a través de una red como si estos archivos estuvieran ubicados dentro de un directorio local.
Un aspecto notable de este protocolo es su falta de mecanismos de autenticación o autorización integrados. En su lugar, la autorización se basa en la información del sistema de archivos, siendo el servidor responsable de traducir con precisión la información del usuario proporcionada por el cliente al formato de autorización requerido por el sistema de archivos, siguiendo principalmente la sintaxis de UNIX.
La autenticación comúnmente se basa en identificadores UID
/GID
de UNIX y membresías de grupo. Sin embargo, surge un desafío debido a la posible discrepancia en los mapeos UID
/GID
entre clientes y servidores, dejando sin espacio para una verificación adicional por parte del servidor. En consecuencia, el protocolo es más adecuado para su uso dentro de redes de confianza, dado su dependencia de este método de autenticación.
Puerto por defecto: 2049/TCP/UDP (excepto la versión 4, solo necesita TCP o UDP).
NFSv2: Esta versión es reconocida por su amplia compatibilidad con varios sistemas, marcando su importancia con operaciones iniciales predominantemente sobre UDP. Siendo la más antigua de la serie, sentó las bases para desarrollos futuros.
NFSv3: Introducida con una serie de mejoras, NFSv3 se expandió sobre su predecesora al soportar tamaños de archivo variables y ofrecer mecanismos de reporte de errores mejorados. A pesar de sus avances, enfrentó limitaciones en la compatibilidad total hacia atrás con clientes NFSv2.
NFSv4: Una versión histórica en la serie NFS, NFSv4 presentó un conjunto de características diseñadas para modernizar el intercambio de archivos a través de redes. Las mejoras notables incluyen la integración de Kerberos para alta seguridad, la capacidad de atravesar firewalls y operar a través de Internet sin la necesidad de portmappers, soporte para Listas de Control de Acceso (ACLs), y la introducción de operaciones basadas en estado. Sus mejoras de rendimiento y la adopción de un protocolo con estado distinguen a NFSv4 como un avance fundamental en las tecnologías de intercambio de archivos en red.
Cada versión de NFS ha sido desarrollada con la intención de abordar las necesidades en evolución de los entornos de red, mejorando progresivamente la seguridad, compatibilidad y rendimiento.
Para saber qué carpeta tiene el servidor disponible para montarte, puedes preguntarle usando:
Luego móntalo usando:
Deberías especificar usar la versión 2 porque no tiene ninguna autenticación ni autorización.
Ejemplo:
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.
Para listar, montar y cambiar fácilmente el UID y GID para tener acceso a archivos, puedes usar nfsshell.
Permisos de lectura y escritura (rw
): Esta configuración permite tanto la lectura como la escritura en el sistema de archivos. Es esencial considerar las implicaciones de otorgar un acceso tan amplio.
Uso de puertos inseguros (insecure
): Cuando está habilitado, esto permite que el sistema utilice puertos por encima de 1024. La seguridad de los puertos por encima de este rango puede ser menos estricta, aumentando el riesgo.
Visibilidad de sistemas de archivos anidados (nohide
): Esta configuración hace que los directorios sean visibles incluso si otro sistema de archivos está montado debajo de un directorio exportado. Cada directorio requiere su propia entrada de exportación para una gestión adecuada.
Propiedad de archivos de root (no_root_squash
): Con esta configuración, los archivos creados por el usuario root mantienen su UID/GID original de 0, ignorando el principio de menor privilegio y potencialmente otorgando permisos excesivos.
No aplastamiento de todos los usuarios (no_all_squash
): Esta opción asegura que las identidades de los usuarios se conserven en todo el sistema, lo que podría llevar a problemas de permisos y control de acceso si no se maneja correctamente.
NFS no_root_squash y no_all_squash escalación de privilegios
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)