Búsqueda en Exploit-DB mediante CLI

CiberseguridadBeginner
Practicar Ahora

Introducción

En el campo de la ciberseguridad, descubrir una vulnerabilidad de software es solo el primer paso. Para comprender el riesgo real, los profesionales de la seguridad deben cerrar la brecha entre el descubrimiento y la explotación. La Exploit Database (Exploit-DB) es un archivo compatible con CVE de exploits públicos y el software vulnerable correspondiente, desarrollado para su uso por parte de pentesters e investigadores de vulnerabilidades.

Este puente es importante porque un hallazgo de vulnerabilidad tiene un significado práctico diferente dependiendo de si existe material de explotación público, qué tan maduro es y qué condiciones requiere. Mapear las versiones de software con referencias de exploits ayuda a convertir un descubrimiento bruto en un contexto de riesgo.

En este laboratorio, aprenderás a utilizar searchsploit, la interfaz de línea de comandos oficial para Exploit-DB. Practicarás la actualización de la base de datos local de exploits, la búsqueda de versiones de software específicas, el filtrado de grandes conjuntos de resultados y la extracción de código fuente de exploits para su análisis. Estas habilidades son esenciales para mapear los servicios descubiertos con vectores de ataque conocidos.

Actualizar la base de datos de Searchsploit

En este paso, aprenderás a asegurarte de que tu copia local de la Exploit Database esté actualizada.

La herramienta searchsploit depende de un repositorio local de exploits. Dado que se descubren y publican nuevas vulnerabilidades a diario, es crucial actualizar esta base de datos regularmente antes de realizar cualquier búsqueda. Si buscas en una base de datos desactualizada, podrías pasar por alto exploits publicados recientemente para el software que estás investigando.

Mantener las referencias de exploits actualizadas es parte de la higiene de evaluación. Un contexto desactualizado puede causar tanto una falsa sensación de seguridad como una urgencia fuera de lugar.

Para actualizar la base de datos, puedes utilizar el flag de actualización proporcionado por el comando searchsploit. Ejecuta el siguiente comando en tu terminal:

searchsploit -u

Deberías ver una salida que indica que la herramienta está obteniendo los últimos cambios del repositorio oficial. La salida se verá similar a esto:

[*] Updating searchsploit...
Already up to date.

Al ejecutar este comando, tu directorio local /opt/exploitdb se sincroniza con los últimos exploits, shellcodes y documentos disponibles en Exploit-DB.

Nota: El proceso de actualización puede tardar varios minutos en completarse, especialmente al verificar exploitdb-papers (por ejemplo, al mostrar Nothing here (/opt/exploitdb-papers). Starting fresh...). Por favor, ten paciencia y deja que termine. Si prefieres no esperar, puedes presionar Ctrl+C de forma segura para cancelar el proceso o simplemente abrir una nueva pestaña de terminal para continuar con el laboratorio, ya que la base de datos principal de exploits se actualiza primero.

Búsqueda por versión de software

En este paso, aprenderás a realizar una búsqueda básica para una versión de software específica.

Cuando escaneas un sistema objetivo (por ejemplo, usando Nmap), a menudo descubres la versión exacta de los servicios que se ejecutan en él. Puedes pasar estos números de versión directamente a searchsploit para encontrar exploits relevantes. La herramienta busca en los títulos y descripciones de los exploits en su base de datos para encontrar coincidencias.

Es por esto que una detección de versiones cuidadosa es importante. Cuanto mejor sea tu identificación de software, más útil y precisa será tu correlación de exploits.

Imagina que has descubierto un servidor FTP que ejecuta vsftpd 2.3.4. Esta es una versión del software notoriamente vulnerable. Para buscar exploits relacionados con esta versión específica, escribe el nombre del software y la versión como argumentos:

searchsploit vsftpd 2.3.4

El comando devolverá una tabla formateada que muestra el título del exploit y su ruta correspondiente en la base de datos. Tu salida debería verse así:

------------------------------------------------------------------------ ---------------------------------
 Exploit Title                                                          |  Path
------------------------------------------------------------------------ ---------------------------------
vsftpd 2.3.4 - Backdoor Command Execution                               | unix/remote/17491.rb
vsftpd 2.3.4 - Backdoor Command Execution (Metasploit)                  | linux/remote/16362.rb
------------------------------------------------------------------------ ---------------------------------
Shellcodes: No Results

Observa que los resultados de búsqueda proporcionan una breve descripción de la vulnerabilidad (en este caso, una ejecución de comandos mediante puerta trasera) y la ruta al archivo de código del exploit. El número en el nombre del archivo (como 17491) es el ID único de la Exploit Database (EDB-ID).

Filtrar resultados de búsqueda

En este paso, aprenderás a refinar tus búsquedas utilizando filtros.

A veces, un término de búsqueda amplio devolverá cientos de resultados, lo que dificulta encontrar lo que necesitas. searchsploit proporciona varios flags para ayudar a reducir la salida. Dos de los flags más útiles son -t (que restringe la búsqueda al título del exploit en lugar de a toda la ruta del archivo o descripción) y --exclude (que elimina los resultados que contienen palabras específicas).

Supongamos que estás buscando exploits de escalada de privilegios para el kernel de Linux, pero quieres filtrar cualquier exploit de Denegación de Servicio (DoS), ya que generalmente no son útiles para obtener acceso.

Ejecuta el siguiente comando para buscar en los títulos "linux kernel privilege escalation" mientras excluyes el término "dos":

searchsploit -t linux kernel privilege escalation --exclude="dos"

Verás una lista de exploits diseñados específicamente para la escalada de privilegios en kernels de Linux. La salida será extensa, pero mucho más limpia que una búsqueda genérica:

------------------------------------------------------------------------ ---------------------------------
 Exploit Title                                                          |  Path
------------------------------------------------------------------------ ---------------------------------
Linux Kernel - 'BCC' Local Privilege Escalation                         | linux/local/40759.rb
Linux Kernel - 'BPF' Local Privilege Escalation                         | linux/local/40758.rb
Linux Kernel - 'ptrace_traceme' Local Privilege Escalation              | linux/local/47133.c
...
------------------------------------------------------------------------ ---------------------------------

El uso de estas técnicas de filtrado te permite identificar rápidamente el tipo exacto de exploit que necesitas para tu escenario específico.

Examinar detalles del código del exploit

En este paso, aprenderás a extraer y examinar el código real del exploit.

Encontrar un exploit es solo parte del proceso; también debes leer y comprender el código antes de ejecutarlo. Ejecutar exploits desconocidos puede ser peligroso o puede requerir modificaciones específicas (como cambiar la dirección IP o el puerto del objetivo) para funcionar correctamente.

searchsploit te permite copiar (duplicar) fácilmente un exploit a tu directorio de trabajo actual utilizando el flag -m seguido del EDB-ID. Extraigamos el exploit de vsftpd 2.3.4 que encontramos en el Paso 2, que tenía el EDB-ID 17491.

Ejecuta el siguiente comando para duplicar el exploit en tu directorio ~/project:

searchsploit -m 17491

Deberías ver una salida confirmando que el archivo ha sido copiado:

  Exploit: vsftpd 2.3.4 - Backdoor Command Execution
      URL: https://www.exploit-db.com/exploits/17491
     Path: /opt/exploitdb/exploits/unix/remote/17491.rb
    Codes: CVE-2011-2523, OSVDB-73573
 Verified: True
File Type: Ruby script, ASCII text
Copied to: /home/labex/project/17491.rb

Ahora que el archivo 17491.rb está en tu directorio actual, puedes examinar su contenido utilizando un lector de texto como cat o un editor como nano. Ejecuta el siguiente comando para ver las primeras líneas del código del exploit:

head -n 20 17491.rb

La salida mostrará el código fuente en Ruby para el módulo de Metasploit, lo que te permitirá leer los comentarios, comprender la vulnerabilidad (una puerta trasera maliciosa dejada en el código fuente) y ver cómo el exploit la activa.

Resumen

En este laboratorio, aprendiste a utilizar eficazmente searchsploit para navegar por la Exploit Database directamente desde la línea de comandos. Comenzaste actualizando la base de datos local para asegurarte de tener la información de vulnerabilidad más reciente. Luego, realizaste búsquedas dirigidas basadas en versiones de software específicas y aprendiste a filtrar resultados no deseados utilizando flags de exclusión. Finalmente, practicaste la extracción del código fuente de exploits a tu espacio de trabajo local para una revisión y análisis seguros. Estas técnicas son fundamentales para los flujos de trabajo de evaluación de vulnerabilidades y pruebas de penetración.