ExploitDB MCP Server

Consulta exploits y vulnerabilidades de seguridad en la base de datos ExploitDB.

Documentación

Servidor MCP de ExploitDB

Un servidor de Model Context Protocol que proporciona acceso a la funcionalidad de ExploitDB, desarrollado por Cyreslab.ai. Este servidor permite a asistentes de IA como Claude consultar información sobre exploits y vulnerabilidades de seguridad, mejorando las capacidades de investigación en ciberseguridad e inteligencia de amenazas.

Repositorio de GitHub: https://github.com/Cyreslab-AI/exploitdb-mcp-server Contacto: contact@cyreslab.ai

Características

  • Búsqueda de Exploits: Busca exploits por palabras clave, IDs de CVE, plataformas y más
  • Detalles de Exploits: Obtén información completa sobre exploits específicos, incluido el código
  • Consulta de CVE: Encuentra todos los exploits relacionados con IDs de CVE específicos
  • Exploits Recientes: Realiza un seguimiento de los exploits recién añadidos
  • Estadísticas: Obtén información sobre la distribución de exploits por plataforma, tipo y año
  • Actualizaciones Automáticas: Mantén la base de datos actualizada con actualizaciones programadas

Instalación

Requisitos previos

  • Node.js (v16 o superior)
  • npm (v7 o superior)

Pasos de instalación

  1. Clona el repositorio:

    git clone https://github.com/Cyreslab-AI/exploitdb-mcp-server.git
    cd exploitdb-mcp-server
    
  2. Instala las dependencias:

    npm install
    
  3. Compila el proyecto:

    npm run build
    
  4. Configura el servidor:

    • Crea un archivo .env en el directorio raíz basado en .env.example
    • Ajusta la configuración según sea necesario (directorio de datos, frecuencia de actualización, etc.)
  5. Inicializa la base de datos:

    npm run update-db
    

    Nota: La actualización inicial de la base de datos puede tardar varios minutos, ya que procesa aproximadamente 47,000 exploits del archivo CSV de ExploitDB. El script maneja datos faltantes o malformados de manera elegante utilizando valores de respaldo para los campos obligatorios.

  6. Ejecuta el servidor:

    node build/index.js
    

Configuración de MCP

Para usar este servidor con Claude u otros asistentes compatibles con MCP, añádelo a tu configuración de MCP:

{
  "mcpServers": {
    "mcp-exploitdb-server": {
      "command": "node",
      "args": ["/path/to/exploitdb-mcp-server/build/index.js"]
    }
  }
}

Herramientas Disponibles

El servidor MCP de ExploitDB proporciona 18 herramientas completas para consultar y analizar datos de exploits:

Herramientas de Búsqueda Principal

  1. search_exploits - Búsqueda general con múltiples filtros
  2. get_exploit - Obtén información detallada sobre un exploit específico
  3. find_by_cve - Encuentra exploits por ID de CVE
  4. get_recent_exploits - Obtén exploits añadidos recientemente
  5. get_statistics - Obtén estadísticas de la base de datos

Herramientas de Búsqueda Avanzada

  1. search_by_platform - Busca exploits para una plataforma específica con filtros
  2. search_by_type - Busca por tipo de exploit (webapps, remote, local, dos, hardware, shellcode)
  3. search_by_author - Encuentra todos los exploits de un autor específico
  4. search_by_date_range - Encuentra exploits dentro de un rango de fechas
  5. search_by_tags - Busca por etiquetas reales de ExploitDB (por ejemplo, "SQL Injection (SQLi)", "Cross-Site Scripting (XSS)")

Herramientas de Análisis e Inteligencia

  1. get_platform_statistics - Obtén estadísticas detalladas para una plataforma específica
  2. get_trending_exploits - Encuentra exploits añadidos recientemente (período de tiempo configurable)
  3. compare_exploits - Compara múltiples exploits lado a lado
  4. get_exploit_timeline - Obtén una línea de tiempo cronológica de exploits

Herramientas de Utilidad

  1. batch_get_exploits - Recupera múltiples exploits de manera eficiente (hasta 50)
  2. get_related_exploits - Encuentra exploits relacionados por plataforma, autor, CVE o etiquetas
  3. validate_exploit_id - Verifica si existe un ID de exploit
  4. export_search_results - Exporta resultados de búsqueda en formato JSON o CSV

Ejemplos de Uso

Buscar Exploits

Usa la herramienta search_exploits para buscar exploits en la base de datos:

<use_mcp_tool>
<server_name>mcp-exploitdb-server</server_name>
<tool_name>search_exploits</tool_name>
<arguments>
{
  "query": "wordpress plugin",
  "platform": "php",
  "limit": 5
}
</arguments>
</use_mcp_tool>

Parámetros de búsqueda adicionales:

  • type: Filtra por tipo de exploit (por ejemplo, webapps, remote, local, dos, hardware, shellcode)
  • cve: Filtra por ID de CVE
  • author: Filtra por nombre de autor
  • start_date/end_date: Filtra por rango de fechas (AAAA-MM-DD)
  • verified: Filtra por estado verificado (true/false)
  • offset: Para paginación

Obtener Detalles de un Exploit

Usa la herramienta get_exploit para recuperar información detallada sobre un exploit específico:

<use_mcp_tool>
<server_name>mcp-exploitdb-server</server_name>
<tool_name>get_exploit</tool_name>
<arguments>
{
  "id": 12345,
  "include_code": true
}
</arguments>
</use_mcp_tool>

Encontrar Exploits por CVE

Usa la herramienta find_by_cve para encontrar todos los exploits relacionados con un CVE específico:

<use_mcp_tool>
<server_name>mcp-exploitdb-server</server_name>
<tool_name>find_by_cve</tool_name>
<arguments>
{
  "cve": "CVE-2021-44228",
  "limit": 10
}
</arguments>
</use_mcp_tool>

Obtener Exploits Recientes

Usa la herramienta get_recent_exploits para recuperar exploits añadidos recientemente:

<use_mcp_tool>
<server_name>mcp-exploitdb-server</server_name>
<tool_name>get_recent_exploits</tool_name>
<arguments>
{
  "limit": 10
}
</arguments>
</use_mcp_tool>

Obtener Estadísticas

Usa la herramienta get_statistics para obtener información sobre los exploits en la base de datos:

<use_mcp_tool>
<server_name>mcp-exploitdb-server</server_name>
<tool_name>get_statistics</tool_name>
<arguments>
{}
</arguments>
</use_mcp_tool>

Buscar por Plataforma

Busca exploits para una plataforma específica con filtros avanzados:

<use_mcp_tool>
<server_name>mcp-exploitdb-server</server_name>
<tool_name>search_by_platform</tool_name>
<arguments>
{
  "platform": "php",
  "type": "webapps",
  "verified": true,
  "limit": 10
}
</arguments>
</use_mcp_tool>

Buscar por Autor

Encuentra todos los exploits de un autor específico:

<use_mcp_tool>
<server_name>mcp-exploitdb-server</server_name>
<tool_name>search_by_author</tool_name>
<arguments>
{
  "author": "Offensive Security",
  "limit": 10
}
</arguments>
</use_mcp_tool>

Buscar por Rango de Fechas

Encuentra exploits dentro de un rango de fechas específico:

<use_mcp_tool>
<server_name>mcp-exploitdb-server</server_name>
<tool_name>search_by_date_range</tool_name>
<arguments>
{
  "start_date": "2024-01-01",
  "end_date": "2024-12-31",
  "platform": "windows",
  "limit": 20
}
</arguments>
</use_mcp_tool>

Buscar por Etiquetas

Busca exploits por las etiquetas reales de ExploitDB:

<use_mcp_tool>
<server_name>mcp-exploitdb-server</server_name>
<tool_name>search_by_tags</tool_name>
<arguments>
{
  "tags": ["SQL Injection (SQLi)", "Remote"],
  "match_all": false,
  "limit": 10
}
</arguments>
</use_mcp_tool>

Obtener Exploits en Tendencia

Encuentra exploits añadidos recientemente:

<use_mcp_tool>
<server_name>mcp-exploitdb-server</server_name>
<tool_name>get_trending_exploits</tool_name>
<arguments>
{
  "days": 30,
  "limit": 10
}
</arguments>
</use_mcp_tool>

Comparar Exploits

Compara múltiples exploits lado a lado:

<use_mcp_tool>
<server_name>mcp-exploitdb-server</server_name>
<tool_name>compare_exploits</tool_name>
<arguments>
{
  "ids": [12345, 12346, 12347]
}
</arguments>
</use_mcp_tool>

Obtener Exploits Relacionados

Encuentra exploits relacionados con un exploit específico:

<use_mcp_tool>
<server_name>mcp-exploitdb-server</server_name>
<tool_name>get_related_exploits</tool_name>
<arguments>
{
  "id": 12345,
  "relation_type": "platform",
  "limit": 10
}
</arguments>
</use_mcp_tool>

Obtener Exploits por Lote

Recupera múltiples exploits de manera eficiente:

<use_mcp_tool>
<server_name>mcp-exploitdb-server</server_name>
<tool_name>batch_get_exploits</tool_name>
<arguments>
{
  "ids": [12345, 12346, 12347, 12348],
  "include_code": false
}
</arguments>
</use_mcp_tool>

Exportar Resultados de Búsqueda

Exporta resultados de búsqueda en formato CSV o JSON:

<use_mcp_tool>
<server_name>mcp-exploitdb-server</server_name>
<tool_name>export_search_results</tool_name>
<arguments>
{
  "query": "wordpress",
  "format": "csv",
  "platform": "php",
  "limit": 100
}
</arguments>
</use_mcp_tool>

Opciones de Configuración

El servidor se puede configurar usando variables de entorno o un archivo .env:

VariableDescripciónValor predeterminado
CLONE_REPOSITORYSi se debe clonar el repositorio de ExploitDBfalse
REPOSITORY_URLURL del repositorio de ExploitDBhttps://gitlab.com/exploit-database/exploitdb.git
CSV_URLURL del archivo CSV de ExploitDBhttps://gitlab.com/exploit-database/exploitdb/-/raw/main/files_exploits.csv
DATA_DIRDirectorio para almacenar datos./data
DB_PATHRuta a la base de datos SQLite./data/exploitdb.sqlite
UPDATE_INTERVALFrecuencia de actualización en horas (0 para desactivar)24
MAX_RESULTSNúmero máximo de resultados a devolver por consulta10

Fuentes de Datos

Este servidor utiliza datos de la Base de Datos de Exploits, mantenida por Offensive Security. Los datos se descargan directamente del archivo CSV o se clonan del repositorio de GitLab de ExploitDB.

Modelo de Datos

El CSV ingerido (files_exploits.csv) tiene 17 columnas: id, file, description, date_published, author, type, platform, port, date_added, date_updated, verified, codes, tags, aliases, screenshot_url, application_url, source_url.

Las 17 columnas se ingieren y almacenan:

  • codes — la lista real de referencias CVE/OSVDB separadas por punto y coma (por ejemplo, CVE-2017-13262;CVE-2017-13261;OSVDB-12345). Todos los identificadores CVE se extraen de esta columna en una tabla normalizada exploit_cves, de modo que un exploit que aborda múltiples CVEs se puede descubrir correctamente por cada uno de ellos. Si codes está vacío (las filas más antiguas a veces carecen de él), el servidor recurre a aplicar expresiones regulares para buscar un patrón CVE en el texto de la descripción.
  • tags — la(s) etiqueta(s) real(es) de ExploitDB para el exploit (por ejemplo, SQL Injection (SQLi), Metasploit Framework (MSF)), almacenadas tal cual. No se adivinan mediante coincidencia de palabras clave en la descripción.
  • aliases — nombres/identificadores alternativos para el exploit (por ejemplo, dirtycow, ImageTragick), expuestos como una matriz.
  • screenshot_url, application_url, source_url — enlaces de referencia de la entrada original de ExploitDB, presentados como screenshotUrl, applicationUrl, sourceUrl.

Otro manejo de calidad de datos:

  • Manejo de fechas: Utiliza date_published del CSV, con respaldos a date_added, date_updated, o una fecha predeterminada si faltan todos
  • Campos faltantes: Proporciona valores predeterminados sensatos para campos obligatorios (autor, tipo, plataforma) cuando los datos están incompletos
  • IDs duplicados: Un pequeño número de filas en el CSV ascendente comparten el mismo id; la fila posterior gana (upsert por id)

La representación JSON de cada exploit incluye tanto cve (el CVE principal/primero, mantenido para compatibilidad hacia atrás) como cves (la matriz completa de todos los CVEs asociados con el exploit).

Nota sobre type: el files_exploits.csv ingerido solo contiene filas webapps, remote, local, dos y hardware — la categoría shellcode de ExploitDB vive en un CSV separado (files_shellcodes.csv) que este servidor no ingiere actualmente. shellcode se acepta como valor de filtro para compatibilidad futura, pero actualmente no coincidirá con ninguna fila.

La base de datos típicamente contiene:

  • Más de 46,000 exploits que abarcan desde 1988 hasta la actualidad
  • Más de 33,000 exploits verificados
  • Cobertura en más de 60 plataformas (PHP, Windows, Linux, etc.)
  • Más de 27,000 exploits de aplicaciones web
  • Metadatos completos que incluyen autores, fechas, plataformas, CVEs, etiquetas, alias y URLs de referencia

Licencia

Este proyecto está licenciado bajo la Licencia MIT: consulta el archivo LICENSE para más detalles.

Agradecimientos

Contribuciones

¡Las contribuciones son bienvenidas! No dudes en enviar una Solicitud de Extracción (Pull Request).

¿Tienes sugerencias de funciones o encontraste un error? Abre un problema en nuestro repositorio de GitHub o contáctanos directamente en contact@cyreslab.ai.