应用安全扫描服务

InsightAppSec MCP Server 是一个模型上下文协议服务器,为AI助手提供访问Rapid7 InsightAppSec API的能力,用于应用程序安全扫描、漏洞管理和报告生成。

  • by wagonbomb
  • TypeScript
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 wagonbomb/InsightAppSec-MCP

使用说明

InsightAppSec MCP服务器

模型上下文协议(MCP)服务器,为人工智能助手提供对Rapid7 InsightAppSec API的访问,用于应用程序安全扫描、漏洞管理和报告。

概述

此MCP服务器使Claude等AI助手能够与Rapid7 InsightAppSec交互,使您能够:

  • 管理应用程序及其安全配置
  • 启动并监控安全扫描
  • 查询和分类漏洞
  • 生成安全报告
  • 自动安排扫描时间
  • 搜索所有InsightAppSec资源
  • 配置身份验证 (OAuth、基于表单、宏、流量文件)
  • 管理令牌替换 (CSRF、会话令牌、动态参数)

先决条件

  • Node.js 18.0.0或更高版本
  • 具有API访问权限的Rapid7 InsightAppSec帐户
  • 来自的API密钥 Rapid7洞察平台

安装

来源

# Clone the repository
git clone https://github.com/yourusername/insightappsec-mcp.git
cd insightappsec-mcp

# Install dependencies
npm install

# Build the project
npm run build

配置

创建 .env 基于所提供模板的文件:

cp .env.example .env

编辑 .env 使用您的凭据文件:

INSIGHTAPPSEC_API_KEY=your-api-key-here
INSIGHTAPPSEC_REGION=us

支持的地区:

地区 代码
美国 us
欧洲 eu
亚太地区 ap
加拿大 ca
澳大利亚 au

使用Claude Desktop

将以下内容添加到您的Claude Desktop配置文件中:

窗户: %APPDATA%\Claude\claude_desktop_config.json macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "insightappsec": {
      "command": "node",
      "args": ["C:/path/to/insightappsec-mcp/build/index.js"],
      "env": {
        "INSIGHTAPPSEC_API_KEY": "your-api-key-here",
        "INSIGHTAPPSEC_REGION": "us"
      }
    }
  }
}

重新启动Claude Desktop以加载MCP服务器。

可用工具

应用程序管理

工具 说明
list_apps 列出所有具有分页和排序功能的应用程序
get_app 获取特定应用程序的详细信息
create_app 创建新应用程序
update_app 更新应用程序名称或描述
delete_app 删除应用程序和所有相关数据
manage_app_tags 在应用程序中添加或删除标签

扫描操作

工具 说明
list_scans 具有分页和筛选功能的列表扫描
get_scan 获取特定扫描的详细信息
submit_scan 根据扫描配置提交新的扫描
delete_scan 删除失败的扫描
control_scan 暂停、恢复、停止或取消正在运行的扫描
get_scan_execution_details 获取扫描的实时执行指标
get_scan_engine_events 获取扫描的引擎事件日志

扫描配置

工具 说明
list_scan_configs 列出所有扫描配置
get_scan_config 获取特定扫描配置的详细信息
create_scan_config 创建新的扫描配置
update_scan_config 更新扫描配置设置
delete_scan_config 删除扫描配置

漏洞管理

工具 说明
list_vulnerabilities 使用分页和排序列出漏洞
get_vulnerability 获取有关漏洞的详细信息
update_vulnerability 更新漏洞状态或严重性
get_vulnerability_discoveries 获取漏洞的发现历史记录
list_vulnerability_comments 列出对漏洞的所有评论
add_vulnerability_comment 为漏洞添加注释

调度和自动化

工具 说明
list_schedules 列出所有扫描计划
get_schedule 获取特定日程的详细信息
create_schedule 创建定期扫描计划
update_schedule 更新计划频率或时间
delete_schedule 删除扫描计划

遮光窗

工具 说明
list_blackouts 列出所有遮光窗
get_blackout 获取特定遮光窗的详细信息
create_blackout 创建遮光窗口以防止扫描
update_blackout 更新遮光窗设置
delete_blackout 删除遮光窗口

报告

工具 说明
list_reports 列出所有生成的报告
generate_report 生成新的漏洞报告
get_report_status 检查报告生成的状态

搜索

工具 说明
search 使用DSL查询语法在所有InsightAppSec资源中进行通用搜索

基础设施

工具 说明
list_engines 列出所有已注册的扫描引擎
get_engine 获取特定扫描引擎的详细信息
list_engine_groups 列出所有发动机组
get_engine_group 获取特定发动机组的详细信息

文件管理

工具 说明
list_files 列出应用程序的所有文件(宏、流量、selenium等)
get_file 按ID获取文件元数据
create_file 创建文件元数据条目
upload_file_content 上传二进制文件内容(base64编码)
delete_file 删除文件
download_file 以base64格式下载文件内容

支持的文件类型:

  • MACRO -记录的身份验证序列(.rec)
  • RECORDED_TRAFFIC -HTTP流量捕获(.har、.trec、.saz)
  • SELENIUM -浏览器自动化脚本(.html、.side)
  • CERTIFICATE -SSL证书(.pfx)
  • SWAGGER -API规范(.json、.yaml)
  • WSDL -Web服务定义(.wsdl)
  • GRAPHQL -GraphQL模式(.graphqls)

身份验证和令牌管理

工具 说明
get_scan_config_options 获取完整的扫描配置选项,包括身份验证设置
configure_form_auth 配置基于表单的身份验证(用户名/密码)
configure_oauth 配置OAuth 2.0身份验证
configure_token_replacement 配置全局令牌提取/注入规则
configure_session_handling 配置会话检测、Cookie、重新登录触发器
configure_csrf_handling 配置自动CSRF令牌检测和注入
configure_macro_auth 将宏文件链接到扫描配置以进行身份验证
configure_traffic_auth 将流量文件链接到扫描配置以进行身份验证

对话示例

列出应用程序

“在InsightAppSec中显示我的所有应用程序”

助理将使用 list_apps 检索和显示您的应用程序。

启动安全扫描

“使用‘Production Web App’扫描配置启动扫描”

助理将:

  1. 使用 list_scan_configs 查找配置
  2. 使用 submit_scan 开始扫描
  3. 报告扫描ID和状态

检查漏洞状态

“显示所有高严重性漏洞”

助理将使用 search 使用DSL查询:

type: VULNERABILITY
query: vulnerability.severity='HIGH'

监视正在运行的扫描

“扫描abc-123的状态如何?”

助理将使用 get_scan 和 get_scan_execution_details 显示:

  • 当前扫描状态
  • 进度百分比
  • 请求已完成
  • 到目前为止发现的漏洞

分类漏洞

“将漏洞xyz-789标记为误报,并添加注释解释原因”

助理将:

  1. 使用 update_vulnerability 将状态设置为 FALSE_POSITIVE
  2. 使用 add_vulnerability_comment 添加说明

安排定期扫描

“每周一凌晨2点为生产应用程序设置每周扫描”

助理将使用 create_schedule 与:

  • 频率: WEEKLY
  • 开始时间:下周一凌晨2:00 UTC

配置OAuth身份验证

“为API扫描设置OAuth客户端凭据身份验证”

助理将使用 configure_oauth 与:

  • 资助类型: CLIENT_CREDENTIALS
  • 令牌URL、客户端ID、客户端密钥

为CSRF设置令牌替换

“配置扫描以自动处理CSRF令牌”

助理将使用 configure_csrf_handling 与:

  • auto_detect: true
  • 令牌名称的可选正则表达式模式

上传身份验证宏

“上传我录制的登录宏进行扫描”

助理将:

  1. 使用 create_file 创建元数据(类型:MACRO)
  2. 使用 upload_file_content 具有base64编码的宏内容
  3. 使用 configure_macro_auth 将其链接到扫描配置

搜索查询语法

这 search 该工具支持强大的DSL来查询资源:

运算符

操作员 描述 示例
= 等于 vulnerability.severity='HIGH'
!= 不等于 scan.status!='COMPLETE'
>, <, >=, <= 比较 vulnerability.cvss>7.0
CONTAINS 子字符串匹配 app.name CONTAINS 'prod'
IN 列表中的值 vulnerability.status IN ['UNREVIEWED', 'VERIFIED']
AND, OR 逻辑运算符 severity='HIGH' AND status='UNREVIEWED'

可搜索资源类型

  • VULNERABILITY
  • SCAN
  • SCAN_CONFIG
  • APP
  • SCHEDULE
  • BLACKOUT
  • MODULE
  • ATTACK_TEMPLATE
  • ENGINE
  • ENGINE_GROUP

查询示例

# Find critical vulnerabilities in production apps
type: VULNERABILITY
query: vulnerability.severity='HIGH' AND app.name CONTAINS 'prod'

# Find running scans
type: SCAN
query: scan.status='RUNNING'

# Find scan configs without recent scans
type: SCAN_CONFIG
query: scan_config.last_scan_date < '2024-01-01'

验证配置

MCP服务器支持全面的身份验证配置,用于扫描经过身份验证的应用程序。

OAuth 2.0身份验证

为基于API的身份验证配置OAuth:

configure_oauth:
  scan_config_id: "uuid"
  grant_type: "CLIENT_CREDENTIALS"
  token_url: "https://auth.example.com/oauth/token"
  client_id: "your-client-id"
  client_secret: "your-client-secret"
  scope: "read write"

支持的资助类型:

  • CLIENT_CREDENTIALS -服务器到服务器身份验证
  • AUTHORIZATION_CODE -用户授权访问
  • RESOURCE_OWNER_PASSWORD -直接用户名/密码
  • IMPLICIT -基于浏览器的应用程序

基于表单的身份验证

配置传统登录表单身份验证:

configure_form_auth:
  scan_config_id: "uuid"
  username_field: "email"
  password_field: "password"
  username: "test@example.com"
  password: "testpassword"
  logged_in_regex: "Welcome|Dashboard"
  logout_link_regex: "logout|sign.out"

令牌替换

从响应中提取令牌并将其注入后续请求中:

configure_token_replacement:
  scan_config_id: "uuid"
  extraction_location: "RESPONSE_BODY"
  extraction_pattern: "csrf_token\":\"([^\"]+)\""
  injection_location: "REQUEST_HEADER"
  injection_parameter: "X-CSRF-Token"

支持的位置:

  • REQUEST_URL, REQUEST_HEADER, REQUEST_BODY, REQUEST_COOKIE
  • RESPONSE_HEADER, RESPONSE_BODY

CSRF令牌处理

启用自动CSRF令牌检测和注入:

configure_csrf_handling:
  scan_config_id: "uuid"
  auto_detect: true
  token_name_regex: "csrf|_token|authenticity"

会话管理

配置会话检测和自动重新身份验证:

configure_session_handling:
  scan_config_id: "uuid"
  session_cookie_regex: "JSESSIONID|PHPSESSID"
  session_loss_regex: "session expired|please login"
  relogin_on_session_loss: true
  lock_cookies: true

基于宏的身份验证

使用录制的宏进行复杂的身份验证流程:

  1. 上传宏文件:
create_file:
  app_id: "uuid"
  name: "login-macro.rec"
  type: "MACRO"

upload_file_content:
  app_id: "uuid"
  file_id: "uuid"
  content_base64: "<base64-encoded-macro>"
  1. 配置扫描以使用它:
configure_macro_auth:
  scan_config_id: "uuid"
  macro_file_id: "uuid"
  replay_speed: 1.0

漏洞状态

状态 描述
UNREVIEWED 新漏洞,尚未分类
FALSE_POSITIVE 确定为假阳性
VERIFIED 确认为真正的漏洞
IGNORED 已确认但已接受的风险
REMEDIATED 已在应用程序中修复
DUPLICATE 重复另一项发现

严重级别

严重性 描述
SAFE 无安全影响
INFORMATIONAL 信息披露
LOW 轻微安全问题
MEDIUM 中等安全风险
HIGH 严重安全漏洞

发展

项目结构

insightappsec-mcp/
├── src/
│   ├── index.ts              # Entry point
│   ├── config.ts             # Configuration management
│   ├── client/
│   │   └── api-client.ts     # HTTP client for InsightAppSec API
│   ├── schemas/
│   │   └── common.ts         # Shared Zod schemas
│   ├── tools/
│   │   ├── apps.ts           # Application management tools
│   │   ├── scans.ts          # Scan operation tools
│   │   ├── scan-configs.ts   # Scan configuration tools
│   │   ├── vulnerabilities.ts # Vulnerability management tools
│   │   ├── schedules.ts      # Schedule management tools
│   │   ├── blackouts.ts      # Blackout window tools
│   │   ├── engines.ts        # Engine management tools
│   │   ├── reports.ts        # Reporting tools
│   │   ├── search.ts         # Search tool
│   │   ├── files.ts          # File management tools
│   │   └── auth.ts           # Authentication configuration tools
│   └── utils/
│       └── response-formatter.ts  # MCP response formatting
├── build/                    # Compiled JavaScript output
├── package.json
├── tsconfig.json
└── .env.example

脚本

# Build the project
npm run build

# Run in development mode
npm run dev

# Type checking
npm run typecheck

# Run tests
npm test

添加新工具

  1. 在中创建或修改工具文件 src/tools/
  2. 使用 server.tool() 注册工具的方法:
server.tool(
  "tool_name",
  "Tool description",
  {
    param1: z.string().describe("Parameter description"),
    param2: z.number().optional().describe("Optional parameter"),
  },
  async ({ param1, param2 }) => {
    const result = await client.get<unknown>("/endpoint");

    if (result.error) {
      return formatErrorResponse(result.error);
    }

    return formatResponse(result.data);
  }
);
  1. 导入并注册 src/index.ts

错误处理

服务器正常处理常见的API错误:

状态代码 含义
400 错误请求-检查参数
401 身份验证失败-检查API密钥
403 禁止访问-权限不足
404 找不到资源
409 资源冲突
422 验证错误-检查请求正文
429 速率受限-等待并重试
5xx 服务器错误-稍后重试

错误响应包括:

  • 状态码
  • 错误信息
  • 相关ID(用于Rapid7支持)
  • 详细的错误信息(如果可用)

api参考

此MCP服务器包装 Rapid7 InsightAppSec API v1.

有关API的详细文档,请参阅:

许可证

麻省理工学院

贡献

欢迎投稿!请随时提交问题和拉取请求。

支持

  • 有关InsightAppSec API问题,请联系 Rapid7支持
  • 对于MCP服务器问题,打开GitHub问题