mcpField
P
pentest-mcp-server

pentest-mcp-server

远程服务
github.com/cyanheads安全12 周前更新
代码仓库

关于 pentest-mcp-server

面向授权渗透测试、CTF 和安全研究的离线 MCP 方法论服务,结合 MITRE ATT&CK、OWASP 指引与载荷模板,并为技术和发现提供检测及缓解背景。

主要功能

  1. 01生成含检测与缓解措施的分阶段测试指南
  2. 02查询 ATT&CK 技术、组织和软件
  3. 03按目标特征排列技术与 OWASP 测试
  4. 04分析 HTTP 响应中的信息泄露和配置问题
  5. 05生成并编码附有说明的载荷模板

适用场景

  1. 01围绕漏洞类别规划授权测试
  2. 02根据目标特征筛选相关测试和检测机会
  3. 03检查 HTTP 响应是否暴露信息或配置不当
  4. 04准备附带检测与修复背景的载荷示例

MCP 相关

向 MCP 客户端提供七种方法论、查询、分析和载荷工具。支持 stdio 与 Streamable HTTP,运行时使用内嵌数据,不调用外部 API。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://pentest.caseyjhand.com/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

安装包
npm@cyanheads/pentest-mcp-server0.2.0

工具

7
参数类型必填说明
phaseenum否方法阶段选择器。"all" 返回完整操作手册;指定阶段名称则仅返回该阶段。all | recon | enumeration | exploitation | post_exploitation
vectorenum是要获取方法的攻击向量。每种向量都有自己的方法分支,涵盖从侦察到利用的过程。仅限授权测试。auth_bypass | idor | ssrf | xss | sqli | xxe | path_traversal | cors | csrf | open_redirect | deserialization | race_condition | ssti | command_injection | jwt_attack
target_contextobject否授权测试的可选目标配置。提供此信息可将操作手册范围缩小到最适合特定环境的内容。
target_context.wafstring否正在使用的 WAF 或过滤器(例如,"Cloudflare"、"AWS WAF"、"ModSecurity CRS"、"custom regex")。这会在负载建议中触发考虑绕过的变体。
target_context.stackstring否技术栈(例如,"Node.js + Express + PostgreSQL"、"PHP 7.4 + Apache"、"Spring Boot")。将方法范围缩小到特定技术栈的技术。
target_context.recon_notesstring否要纳入的自由格式侦察发现。例如,"endpoint /api/users/{id} reflects user input in JSON response"。用于缩小最相关阶段的范围。

详细介绍

@cyanheads/pentest-mcp-server

面向授权渗透测试、CTF、安全研究和教育的离线方法论引擎与载荷工作台,通过 MCP 提供服务。支持 STDIO 或 Streamable HTTP。

7 个工具

版本 许可证 Docker MCP SDK npm TypeScript Bun

在 Claude Desktop 中安装 在 Cursor 中安装 在 VS Code 中安装

框架

公开托管服务: https://pentest.caseyjhand.com/mcp


仅限授权使用。 此服务专为渗透测试人员、红队成员、CTF 参与者、安全研究人员和学生设计,供其测试自有系统或已获得明确书面授权的系统。用户须自行负责确保测试合法且范围适当。未经授权访问计算机系统属于违法行为——此服务不会、也无法代替你验证授权。

双重受众设计。 每种攻击技术都配有检测指标和缓解措施。蓝队成员、开发人员以及任何构建检测覆盖能力的人,都能发现其中的方法论和 ATT&CK 数据与红队工作流同样有用。


概述

这是一款面向授权渗透测试、CTF 和安全研究的离线方法论引擎,基于 MITRE ATT&CK、OWASP 测试指南和附注载荷模板构建。生成分阶段测试计划、将技术映射到目标、分析 HTTP 响应以查找信息泄露,并生成或编码载荷;每项功能都附有检测和缓解说明。

工具
工具描述
pentest_get_guide针对所选攻击向量的授权测试方法指南,按阶段筛选,并为每种技术提供检测和缓解措施。
pentest_analyze_response分析授权探测获取的原始 HTTP 响应标头/正文,检查信息泄露、指纹识别和配置错误。
pentest_lookup_technique按 ID 或关键词查询 MITRE ATT&CK 技术,并提供检测数据、缓解措施和操作示例。
pentest_lookup_group按 ID 或名称查询 MITRE ATT&CK 威胁组织或软件条目,并提供别名和技术使用情况。
pentest_map_techniques根据目标配置(技术栈、服务、身份验证类型、操作系统)对 ATT&CK 技术和 OWASP 测试用例进行排序。
pentest_generate_payloads为漏洞类别和注入上下文生成带注释的载荷模板,并可选提供 WAF 绕过变体和编码。
pentest_encode_payload对载荷字符串按顺序应用编码链,并跟踪解码路径。

功能参考

pentest_get_guide tool
  • vector:auth_bypass、idor、ssrf、xss、sqli、xxe、path_traversal、cors、csrf、open_redirect、deserialization、race_condition、ssti、command_injection 或 jwt_attack;phase:all(默认)、recon、enumeration、exploitation 或 post_exploitation
  • 指南中的技术包含 detection 和 mitigation,以及 owasp_references、attack_technique_ids 和基于上下文的 nextToolSuggestions
  • 可选的 target_context(stack、waf、recon_notes)可缩小指南范围

pentest_analyze_response tool
  • 提供 response_headers(≤20,000 个字符)、response_body(≤10,000 个字符)或两者;可选提供 status_code(100–599)和 context(≤2,000 个字符)。如果两个响应字段都缺失,则返回 no_input
  • 发现结果包含 category、severity(info/low/medium/high)、detection 和 remediation,并按严重程度降序排列
  • fingerprints(server_software、framework、language、database、cloud_provider、other)和 nextToolSuggestions 支持后续调用

pentest_lookup_technique tool
  • 提供 ATT&CK ID(T1190、T1059.001)或关键词;include_subtechniques 默认为 true
  • 返回战术、平台、描述、detection(summary、data_sources、indicators)、缓解措施、操作示例和 attack_version
  • 如果 ID 或关键词无法匹配任何结果,则返回 no_match

pentest_lookup_group tool
  • 提供 ATT&CK 组织 ID(G0007)、软件 ID(S0002)或名称/关键词;如果无法匹配任何结果,则返回 no_match
  • type 用于区分 group 和 software;结果包含 aliases、description(≤800 个字符)和 attack_version
  • techniques_used 最多返回 20 项技术,包含操作上下文,以及供 pentest_lookup_technique 使用的 technique_id

pentest_map_techniques tool
  • 至少提供 stack、services、auth_type(jwt/session_cookie/api_key/oauth2/basic_auth/ntlm/kerberos/none/unknown)或 os(linux/windows/macos/unknown)中的一项;否则返回 no_profile
  • ranked_techniques 包含 relevance_score、relevance_rationale、detection_opportunity、mitigation_summary 和可选的 pentest_guide_vector;owasp_test_cases 最多返回 10 项用例
  • limit 将技术数量限制为 1–50 项(默认 15);补充信息(truncated、shown、cap)会说明上限

pentest_generate_payloads 工具
  • category:xss、sqli、ssrf、xxe、path_traversal、ssti、command_injection、open_redirect、csrf、deserialization、jwt、ldap_injection、nosql_injection 或 http_header;injection_context:html_attribute、html_body、js_string、js_template、js_script_block、url_parameter、url_path、sql_where、sql_integer、xml_element、xml_attribute、http_header、json_value、cookie_value、file_name 或 generic
  • count 将模板数量限制为 1–20(默认值为 5);每个模板都包含 detection_signature 和 mitigation,还可选择将 encoding 应用于每个模板
  • waf_profile:cloudflare、aws_waf、modsecurity_crs、imperva、akamai、f5_bigip_asm、nginx_modsecurity、fortinet_fortiWAF、none(默认值)或 unknown;除 none 外的配置会添加 waf_bypass_note

pentest_encode_payload 工具
  • payload 最多接受 10,000 个字符;chain 从左到右应用 1–6 个步骤,可选项为 url、double_url、html_entity、unicode、hex、base64、js_escape、null_byte、mixed_case 或 comment_break
  • 返回 intermediate_steps 和 detection_note;explain(默认值为 true)会添加 decode_path 和 bypass_rationale
  • 转换失败时返回 encoding_error

功能

基于 @cyanheads/mcp-ts-core 构建:支持 stdio 和 Streamable HTTP 传输、可插拔身份验证(none / jwt / oauth)、可替换存储(in-memory、filesystem、Supabase、Cloudflare KV/R2/D1),以及支持可选 OpenTelemetry 跟踪的结构化日志记录。

特定于方法论的功能:

  • 运行时完全离线——不调用外部 API,无需凭据;所有数据均在启动时加载,请求处理期间不进行任何 I/O
  • 在构建时通过 scripts/refresh-attack.ts 嵌入 MITRE ATT&CK Enterprise 数据,并按 ID/关键词建立内存索引;若缺少数据文件,则会立即报错并提供可操作的提示
  • OWASP Testing Guide 方法论和载荷模板库以结构化 TypeScript 模块的形式整理,每个向量/类别对应一个模块
  • 按 WAF 产品和攻击向量索引 WAF 绕过变体,并引用公开研究
  • 所有工具均标注 readOnlyHint: true、openWorldHint: false——基于范围有限的内嵌数据集生成确定性输出

面向 Agent 的输出:

  • 每个指南/载荷/编码响应的 content[] 首行都会显示 authorized_use_reminder——无论客户端转发哪个界面中的内容,提示格式都保持一致
  • 技术和载荷需要包含检测与缓解背景;响应发现结果需要包含 detection 和 remediation
  • 每个由 ATT&CK 支持的响应都会回传 attack_version,便于调用方了解数据版本
  • nextToolSuggestions 会预先填入根据当前上下文生成的参数,减少 Agent 的规划开销

构建时数据步骤

服务器会将 MITRE ATT&CK Enterprise 数据(约 20 MB 的 JSON)内嵌;数据由一次性脚本下载到 Git 忽略的路径。自托管用户和 Docker 构建者必须在服务器启动前运行此步骤:

bun run scripts/refresh-attack.ts

此操作会从 MITRE GitHub 发布端点下载最新的 ATT&CK Enterprise JSON,将其写入 src/data/attack/enterprise.json(Git 忽略),并使用类似 Enterprise v16.1 的版本字符串更新 src/data/attack/version.ts。版本文件会提交到仓库;JSON 不会提交(文件过大,不适合纳入 Git 历史记录)。

Dockerfile 会自动处理此步骤——构建阶段会在 TypeScript 编译前运行 scripts/refresh-attack.ts,因此 docker build 会生成自包含镜像。

如果你克隆仓库后跳过此步骤,attack-service 会在启动时立即失败,并显示指向 scripts/refresh-attack.ts 的可操作错误消息。

每季度(或每次发布前)运行该脚本,以获取最新的 ATT&CK 版本。


开始使用

公共托管实例

可使用公共实例:https://pentest.caseyjhand.com/mcp,无需安装。通过 Streamable HTTP 将任意 MCP 客户端指向该实例:

{
  "mcpServers": {
    "pentest-mcp-server": {
      "type": "streamable-http",
      "url": "https://pentest.caseyjhand.com/mcp"
    }
  }
}
自托管 / 本地

将以下内容添加到 MCP 客户端配置文件中。

{
  "mcpServers": {
    "pentest-mcp-server": {
      "type": "stdio",
      "command": "bunx",
      "args": ["@cyanheads/pentest-mcp-server@latest"],
      "env": {
        "MCP_TRANSPORT_TYPE": "stdio",
        "MCP_LOG_LEVEL": "info"
      }
    }
  }
}

也可以使用 npx(无需 Bun):

{
  "mcpServers": {
    "pentest-mcp-server": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@cyanheads/pentest-mcp-server@latest"],
      "env": {
        "MCP_TRANSPORT_TYPE": "stdio",
        "MCP_LOG_LEVEL": "info"
      }
    }
  }
}

也可以使用 Docker:

{
  "mcpServers": {
    "pentest-mcp-server": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "MCP_TRANSPORT_TYPE=stdio",
        "ghcr.io/cyanheads/pentest-mcp-server:latest"
      ]
    }
  }
}

对于 Streamable HTTP,设置传输方式并启动服务:

MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 bun run start:http
# Server listens at http://localhost:3010/mcp
先决条件
  • Bun v1.4.0 或更高版本(或 Node.js v24+)。
  • 已填充 ATT&CK 数据 — 克隆后运行一次 bun run scripts/refresh-attack.ts(Docker 构建会自动处理)。
安装
  1. 克隆仓库:
git clone https://github.com/cyanheads/pentest-mcp-server.git
  1. 进入目录:
cd pentest-mcp-server
  1. 安装依赖项:
bun install
  1. 填充 ATT&CK 数据:
bun run scripts/refresh-attack.ts
  1. 配置环境:
cp .env.example .env
# edit .env if needed — no required vars beyond transport defaults

配置

无需 API 密钥。服务在运行时完全离线。

变量描述默认值
MCP_TRANSPORT_TYPE传输方式:stdio 或 http。stdio
MCP_HTTP_PORTHTTP 服务端口。3010
MCP_AUTH_MODE认证模式:none、jwt 或 oauth。none
MCP_LOG_LEVEL日志级别:debug、info、notice、warning、error。info
PENTEST_ENABLE_PAYLOAD_GENERATION启用 pentest_generate_payloads 和 pentest_encode_payload;设为 false 时,这些工具将对客户端隐藏。true
LOGS_DIR日志文件目录(仅限 Node.js)。<project-root>/logs
OTEL_ENABLED启用 OpenTelemetry 检测(跨度、指标、完成日志)。false
LOG_TOOL_FAILURE_PAYLOADS记录调用失败时的参数和结果(键名会被隐藏;自由格式的值仍可能包含机密)。false
OTEL_EXPORTER_OTLP_LOGS_ENDPOINTOTLP 日志导出目标。—

完整的可选覆盖项列表请参阅 .env.example。

设置 PENTEST_ENABLE_PAYLOAD_GENERATION=false 后,MCP 发现中将不包含这两个载荷工具,也无法调用它们。


运行服务

本地开发
  • 构建并运行:

    # Seed ATT&CK data (first time, or to update)
    bun run scripts/refresh-attack.ts
    
    # Build
    bun run rebuild
    
    # Run
    bun run start:stdio
    # or
    bun run start:http
    
  • 运行检查和测试:

    bun run devcheck   # Lint, format, typecheck, security audit
    bun run test       # Vitest test suite
    bun run lint:mcp   # Validate MCP definitions
    
Docker
# Build — ATT&CK data is fetched during the build stage
docker build -t pentest-mcp-server .
docker run --rm -p 3010:3010 pentest-mcp-server

Dockerfile 默认使用 HTTP 传输、无状态会话模式,并将日志写入 /var/log/pentest-mcp-server。默认会安装 OpenTelemetry 对等依赖项 — 使用 --build-arg OTEL_ENABLED=false 构建可省略这些依赖项。ATT&CK 数据会在构建阶段自动刷新。


项目结构

目录 / 文件用途
src/index.tscreateApp() 入口点 — 注册工具并初始化服务。
src/services/attack/MITRE ATT&CK 服务 — 启动时加载并索引内嵌的企业版 JSON。
src/services/methodology/OWASP Testing Guide 方法论服务 — 为 pentest_get_guide 提供向量分支。
src/services/payload/Payload 模板服务 — 按类别和注入上下文编制索引。
src/services/encoding/编码链执行器 — 纯 TypeScript 转换。
src/services/response-analysis/信息泄露和指纹识别检测的模式库。
src/mcp-server/tools/definitions/工具定义(*.tool.ts)— 每个工具对应一个文件。
src/data/attack/enterprise.json(由 scripts/refresh-attack.ts 获取并被 git 忽略)+ 已提交的 version.ts。
src/data/owasp/以 TypeScript 模块形式整理的 OWASP TG v4.2 方法论内容。
src/data/payloads/按漏洞类别整理并附有注释的 Payload 模板。
src/data/waf-bypass/按产品和攻击向量编制索引的 WAF 绕过变体。
src/data/encodings/编码转换函数。
src/data/patterns/用于检测响应泄露的正则表达式模式和元数据。
scripts/refresh-attack.ts下载 ATT&CK Enterprise JSON 并更新版本字符串。克隆后运行一次,之后每季度运行一次。
scripts/copy-attack.ts编译后将预置的 ATT&CK 数据集复制到 dist/。
tests/与 src/ 结构对应的单元测试和集成测试。
docs/design.md设计文档 — 工具接口、数据策略和架构决策。

开发指南

请参阅 CLAUDE.md,了解开发指南和架构规则。简要说明:

  • 处理器抛出异常,由框架捕获;仅在将自行负责的操作失败转换为已声明的 ctx.fail 契约时才捕获异常
  • 使用 ctx.log 记录请求范围内的日志,并确保请求处理无状态且具有确定性
  • 通过 src/mcp-server/tools/index.ts 中的汇总导出注册新工具
  • 外部数据源边界:验证原始数据,将其规范化为领域类型,然后返回输出架构;绝不虚构缺失字段
  • 每个生成方法论或 Payload 内容的工具都必须包含 authorized_use_reminder 输出字段 — 在 format() 中将其作为每个 content[] 响应的第一行
  • 技术和 Payload 必须包含检测与缓解上下文;响应发现项必须包含 detection 和 remediation

贡献

欢迎提交问题。提交前请运行检查和测试:

bun run devcheck
bun run test

许可证

Apache-2.0 — 详情请参阅 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。