ExploitDB MCP Server

Consulte exploits e vulnerabilidades de segurança do banco de dados ExploitDB.

Documentação

Servidor MCP ExploitDB

Um servidor Model Context Protocol que fornece acesso à funcionalidade do ExploitDB, desenvolvido por Cyreslab.ai. Este servidor permite que assistentes de IA como o Claude consultem informações sobre exploits e vulnerabilidades de segurança, aprimorando as capacidades de pesquisa em cibersegurança e inteligência de ameaças.

Repositório GitHub: https://github.com/Cyreslab-AI/exploitdb-mcp-server Contato: contact@cyreslab.ai

Recursos

  • Pesquisa de Exploits: Pesquise exploits por palavras-chave, IDs CVE, plataformas e mais
  • Detalhes do Exploit: Obtenha informações abrangentes sobre exploits específicos, incluindo código
  • Consulta CVE: Encontre todos os exploits relacionados a IDs CVE específicos
  • Exploits Recentes: Acompanhe exploits recém-adicionados
  • Estatísticas: Obtenha insights sobre a distribuição de exploits por plataforma, tipo e ano
  • Atualizações Automáticas: Mantenha o banco de dados atualizado com atualizações agendadas

Instalação

Pré-requisitos

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

Etapas de Instalação

  1. Clone o repositório:

    git clone https://github.com/Cyreslab-AI/exploitdb-mcp-server.git
    cd exploitdb-mcp-server
    
  2. Instale as dependências:

    npm install
    
  3. Compile o projeto:

    npm run build
    
  4. Configure o servidor:

    • Crie um arquivo .env no diretório raiz com base em .env.example
    • Ajuste as configurações conforme necessário (diretório de dados, frequência de atualização, etc.)
  5. Inicialize o banco de dados:

    npm run update-db
    

    Nota: A atualização inicial do banco de dados pode levar vários minutos, pois processa aproximadamente 47.000 exploits do arquivo CSV do ExploitDB. O script lida com dados ausentes ou malformados de forma graciosa, usando valores de fallback para campos obrigatórios.

  6. Execute o servidor:

    node build/index.js
    

Configuração MCP

Para usar este servidor com Claude ou outros assistentes compatíveis com MCP, adicione-o à sua configuração MCP:

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

Ferramentas Disponíveis

O servidor MCP ExploitDB fornece 18 ferramentas abrangentes para consultar e analisar dados de exploits:

Ferramentas Principais de Pesquisa

  1. search_exploits - Pesquisa geral com múltiplos filtros
  2. get_exploit - Obtenha informações detalhadas sobre um exploit específico
  3. find_by_cve - Encontre exploits por ID CVE
  4. get_recent_exploits - Obtenha exploits adicionados recentemente
  5. get_statistics - Obtenha estatísticas do banco de dados

Ferramentas Avançadas de Pesquisa

  1. search_by_platform - Pesquise exploits para uma plataforma específica com filtros
  2. search_by_type - Pesquise por tipo de exploit (webapps, remote, local, dos, hardware, shellcode)
  3. search_by_author - Encontre todos os exploits de um autor específico
  4. search_by_date_range - Encontre exploits dentro de um intervalo de datas
  5. search_by_tags - Pesquise pelas tags reais do ExploitDB (ex.: "SQL Injection (SQLi)", "Cross-Site Scripting (XSS)")

Ferramentas de Análise e Inteligência

  1. get_platform_statistics - Obtenha estatísticas detalhadas para uma plataforma específica
  2. get_trending_exploits - Encontre exploits adicionados recentemente (período de tempo configurável)
  3. compare_exploits - Compare múltiplos exploits lado a lado
  4. get_exploit_timeline - Obtenha a linha do tempo cronológica dos exploits

Ferramentas Utilitárias

  1. batch_get_exploits - Recupere múltiplos exploits de forma eficiente (até 50)
  2. get_related_exploits - Encontre exploits relacionados por plataforma, autor, CVE ou tags
  3. validate_exploit_id - Verifique se um ID de exploit existe
  4. export_search_results - Exporte resultados de pesquisa em formato JSON ou CSV

Exemplos de Uso

Pesquisar Exploits

Use a ferramenta search_exploits para pesquisar exploits no banco de dados:

<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 adicionais de pesquisa:

  • type: Filtre por tipo de exploit (ex.: webapps, remote, local, dos, hardware, shellcode)
  • cve: Filtre por ID CVE
  • author: Filtre por nome do autor
  • start_date/end_date: Filtre por intervalo de datas (AAAA-MM-DD)
  • verified: Filtre por status verificado (true/false)
  • offset: Para paginação

Obter Detalhes do Exploit

Use a ferramenta get_exploit para recuperar informações detalhadas sobre um 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

Use a ferramenta find_by_cve para encontrar todos os exploits relacionados a um 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>

Obter Exploits Recentes

Use a ferramenta get_recent_exploits para recuperar exploits adicionados recentemente:

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

Obter Estatísticas

Use a ferramenta get_statistics para obter insights sobre os exploits no banco de dados:

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

Pesquisar por Plataforma

Pesquise exploits para uma plataforma específica com filtros avançados:

<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>

Pesquisar por Autor

Encontre todos os exploits de um 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>

Pesquisar por Intervalo de Datas

Encontre exploits dentro de um intervalo de datas 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>

Pesquisar por Tags

Pesquise exploits pelas tags reais do 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>

Obter Exploits em Tendência

Encontre exploits adicionados recentemente:

<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

Compare múltiplos 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>

Obter Exploits Relacionados

Encontre exploits relacionados a um 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>

Obter Exploits em Lote

Recupere múltiplos exploits de forma 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 Pesquisa

Exporte resultados de pesquisa em formato CSV ou 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>

Opções de Configuração

O servidor pode ser configurado usando variáveis de ambiente ou um arquivo .env:

VariávelDescriçãoPadrão
CLONE_REPOSITORYSe deve clonar o repositório do ExploitDBfalse
REPOSITORY_URLURL do repositório do ExploitDBhttps://gitlab.com/exploit-database/exploitdb.git
CSV_URLURL do arquivo CSV do ExploitDBhttps://gitlab.com/exploit-database/exploitdb/-/raw/main/files_exploits.csv
DATA_DIRDiretório para armazenar dados./data
DB_PATHCaminho para o banco de dados SQLite./data/exploitdb.sqlite
UPDATE_INTERVALFrequência de atualização em horas (0 para desativar)24
MAX_RESULTSNúmero máximo de resultados a retornar por consulta10

Fontes de Dados

Este servidor usa dados do Exploit Database, mantido pela Offensive Security. Os dados são baixados diretamente do arquivo CSV ou clonados do repositório GitLab do ExploitDB.

Modelo de Dados

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

Todas as 17 colunas são ingeridas e armazenadas:

  • codes — a lista real de referências CVE/OSVDB delimitada por ponto e vírgula (ex.: CVE-2017-13262;CVE-2017-13261;OSVDB-12345). Todos os identificadores CVE são extraídos desta coluna para uma tabela normalizada exploit_cves, de modo que um exploit que aborda múltiplos CVEs seja corretamente descoberto por cada um deles. Se codes estiver vazio (linhas mais antigas às vezes não o possuem), o servidor recorre à extração por regex de um padrão CVE do texto da descrição.
  • tags — as tags reais do ExploitDB para o exploit (ex.: SQL Injection (SQLi), Metasploit Framework (MSF)), armazenadas como estão. Elas não são adivinhadas por correspondência de palavras-chave na descrição.
  • aliases — nomes/identificadores alternativos para o exploit (ex.: dirtycow, ImageTragick), expostos como um array.
  • screenshot_url, application_url, source_url — links de referência da entrada original do ExploitDB, apresentados como screenshotUrl, applicationUrl, sourceUrl.

Outros tratamentos de qualidade de dados:

  • Tratamento de datas: Usa date_published do CSV, com fallbacks para date_added, date_updated, ou uma data padrão se todos estiverem ausentes
  • Campos ausentes: Fornece padrões sensatos para campos obrigatórios (autor, tipo, plataforma) quando os dados estão incompletos
  • IDs duplicados: Um pequeno número de linhas no CSV upstream compartilha o mesmo id; a linha mais recente vence (upsert por id)

A representação JSON de cada exploit inclui tanto cve (o CVE primário/primeiro, mantido para compatibilidade retroativa) quanto cves (o array completo de todos os CVEs associados ao exploit).

Nota sobre type: o files_exploits.csv ingerido contém apenas linhas webapps, remote, local, dos e hardware — a categoria shellcode do ExploitDB vive em um CSV separado (files_shellcodes.csv) que este servidor não ingere atualmente. shellcode é aceito como valor de filtro para compatibilidade futura, mas não corresponderá a nenhuma linha atualmente.

O banco de dados normalmente contém:

  • Mais de 46.000 exploits abrangendo de 1988 até o presente
  • Mais de 33.000 exploits verificados
  • Cobertura em mais de 60 plataformas (PHP, Windows, Linux, etc.)
  • Mais de 27.000 exploits de aplicações web
  • Metadados abrangentes incluindo autores, datas, plataformas, CVEs, tags, aliases e URLs de referência

Licença

Este projeto está licenciado sob a Licença MIT - consulte o arquivo LICENSE para detalhes.

Agradecimentos

Contribuição

Contribuições são bem-vindas! Sinta-se à vontade para enviar um Pull Request.

Tem sugestões de recursos ou encontrou um bug? Por favor, abra uma issue em nosso repositório GitHub ou entre em contato diretamente em contact@cyreslab.ai.