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
-
Clona el repositorio:
git clone https://github.com/Cyreslab-AI/exploitdb-mcp-server.git cd exploitdb-mcp-server -
Instala las dependencias:
npm install -
Compila el proyecto:
npm run build -
Configura el servidor:
- Crea un archivo
.enven el directorio raíz basado en.env.example - Ajusta la configuración según sea necesario (directorio de datos, frecuencia de actualización, etc.)
- Crea un archivo
-
Inicializa la base de datos:
npm run update-dbNota: 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.
-
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
- search_exploits - Búsqueda general con múltiples filtros
- get_exploit - Obtén información detallada sobre un exploit específico
- find_by_cve - Encuentra exploits por ID de CVE
- get_recent_exploits - Obtén exploits añadidos recientemente
- get_statistics - Obtén estadísticas de la base de datos
Herramientas de Búsqueda Avanzada
- search_by_platform - Busca exploits para una plataforma específica con filtros
- search_by_type - Busca por tipo de exploit (webapps, remote, local, dos, hardware, shellcode)
- search_by_author - Encuentra todos los exploits de un autor específico
- search_by_date_range - Encuentra exploits dentro de un rango de fechas
- search_by_tags - Busca por etiquetas reales de ExploitDB (por ejemplo, "SQL Injection (SQLi)", "Cross-Site Scripting (XSS)")
Herramientas de Análisis e Inteligencia
- get_platform_statistics - Obtén estadísticas detalladas para una plataforma específica
- get_trending_exploits - Encuentra exploits añadidos recientemente (período de tiempo configurable)
- compare_exploits - Compara múltiples exploits lado a lado
- get_exploit_timeline - Obtén una línea de tiempo cronológica de exploits
Herramientas de Utilidad
- batch_get_exploits - Recupera múltiples exploits de manera eficiente (hasta 50)
- get_related_exploits - Encuentra exploits relacionados por plataforma, autor, CVE o etiquetas
- validate_exploit_id - Verifica si existe un ID de exploit
- 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 CVEauthor: Filtra por nombre de autorstart_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:
| Variable | Descripción | Valor predeterminado |
|---|---|---|
CLONE_REPOSITORY | Si se debe clonar el repositorio de ExploitDB | false |
REPOSITORY_URL | URL del repositorio de ExploitDB | https://gitlab.com/exploit-database/exploitdb.git |
CSV_URL | URL del archivo CSV de ExploitDB | https://gitlab.com/exploit-database/exploitdb/-/raw/main/files_exploits.csv |
DATA_DIR | Directorio para almacenar datos | ./data |
DB_PATH | Ruta a la base de datos SQLite | ./data/exploitdb.sqlite |
UPDATE_INTERVAL | Frecuencia de actualización en horas (0 para desactivar) | 24 |
MAX_RESULTS | Número máximo de resultados a devolver por consulta | 10 |
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 normalizadaexploit_cves, de modo que un exploit que aborda múltiples CVEs se puede descubrir correctamente por cada uno de ellos. Sicodesestá 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 comoscreenshotUrl,applicationUrl,sourceUrl.
Otro manejo de calidad de datos:
- Manejo de fechas: Utiliza
date_publisheddel CSV, con respaldos adate_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 porid)
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
- Offensive Security por mantener la Base de Datos de Exploits
- Model Context Protocol por permitir que los asistentes de IA accedan a herramientas externas
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.