Explotar el Servicio NFS en Metasploitable 2
Network File System o NFS por sus siglas en inglés, es un protocolo para un sistema de archivos distribuido, el cual permite a un usuario en una computadora cliente el acceso hacia archivos a través de la red como si accediera a un almacenamiento local.
Se realiza un escaneo de puertos TCP utilizando la herramienta nmap contra el objetivo de evaluación, donde se detecta en el puerto TCP 2049 el servicio nfs. NFS también puede ser detectado consultando al portmapper por una lista de servicios.
# nmap -Pn -n -sV -p- 192.168.0.X
Para el siguiente ejemplo se utiliza el comando “rpcinfo” para identificar NFS, el cual realiza una llamada RPC (Remote Procedure Call) hacia un servidor RPC y reporta lo encontrado.
RPC o Remote Procedure Call es una técnica para construir sistema distribuidos, y aplicaciones cliente / servidor. Básicamente permite a un programa sobre una máquina llamar a una subrutina sobre otra máquina. RPC no es un protocolo de transporte; en lugar de ello, es un método para utilizar características existentes de una comunicación de una manera transparente. En servidores Unix o similares se debe ser conscientes de la aplicaciones que utilizan RPC.
La opción “-p” evalúa al portmapper del host, e imprime una lista de todos los programas RPC registrados.
# rpcinfo -p 192.168.0.X
Se utiliza el comando “showmount” para mostrar información de montaje sobre un servidor NFS. La opción “-e” muestra la lista de exportación del servidor NFS.
# showmount -e 192.168.0.X
Si la“/” raíz del sistema de archivos del objetivo de evaluación está siendo exportado, entonces es factible montar localmente este sistema de archivos. Con el comando "mount" se utiliza la opción “-t” para indicar el tipo del sistema de archivos a montar. La opción “-o” define otras opciones, para este presente ejemplo el uso de la opción “nolock” permite a las aplicaciones bloquear archivos, pero tales bloqueos proporcionan exclusión únicamente contra otras aplicaciones ejecutándose en el mismo cliente
# mkdir FSremoto
# mount -t nfs 192.168.0.X:/ FSremoto/ -o nolock
Con acceso al sistema de archivos remoto, se pueden visualizar archivos sensibles como el archivo “/etc/shadow” donde se almacenan las contraseñas cifradas.
# cat FSremoto/etc/shadow
Un táctica para obtener acceso hacia el objetivo de evaluación, es conectarse el servicio ssh, para ello se requiere generar un nueva llave ssh.
# ssh-keygen
Esta nueva llave será añadida al archivo de nombre “authorized_keys” propiedad del usuario root.
# cat /tmp/id_rsa.pub >> FSremoto/root/.ssh/authorized_keys
Se establece una conexión al servicio SSH del objetivo de evaluación. La opción “-i” selecciona un archivo desde el cual se lee la identidad (llave privada) para la autenticación de llave pública.
# ssh -i /tmp/id_rsa root@192.168.0.X
Ya se tiene acceso al objetivo de evaluación con los privilegios del usuario “root”.
Fuentes:
http://en.wikipedia.org/wiki/Network_File_System
https://community.rapid7.com/docs/DOC-1875
http://www.computersecuritystudent.com/SECURITY_TOOLS/METASPLOITABLE/EXP...
http://www.pax-pentest.net/exploitation/metasploitable-2-rpc-remote-proc...
Sobre el Autor
Alonso Eduardo Caballero Quezada - ReYDeS
Instructor y Consultor Independiente en Ciberseguridad
WhatsApp: https://wa.me/51949304030
Correo Electrónico: ReYDeS@gmail.com
Twitter: https://twitter.com/Alonso_ReYDeS
Youtube: https://www.youtube.com/c/AlonsoCaballero
LinkedIn: https://pe.linkedin.com/in/alonsocaballeroquezada/