返回 MCP 目录
public公开dns本地运行

autopentest-ai

AutoPentest是一个基于MCP协议的自动化Web应用渗透测试服务器,集成了OWASP WSTG和PortSwigger攻击技术指南,通过角色化代理(侦察、分析、利用、报告)实现七阶段自动化测试,包含109项测试、31种攻击技术、27个安全工具和自适应WAF绕过能力,确保零误报和证据驱动的漏洞发现。

article

README

🚀 AutoPentest

一款智能的渗透测试MCP服务器,它利用完整的OWASP Web安全测试指南和PortSwigger Web安全学院的技术参考,实现了Web应用程序渗透测试的自动化。

将其指向目标——它会爬取你的应用程序,映射每个端点,然后生成特定角色的代理(侦察员、分析员、攻击者、报告员)来测试XSS、SQLi、SSRF、SSTI、IDOR等漏洞。无误报——每个发现都有真实、可重现的证据支持,并且在每个阶段都有质量门确保证据的有效性。它包含31个PortSwigger技术指南、针对12个供应商的自适应WAF规避、跨阶段漏洞链以及基于风险的端点优先级排序。你可以使用Claude Code、API运行它,也可以使用Ollama模型完全离线运行。

可以这样理解:它就像是将高级渗透测试人员的方法编码到MCP服务器中——包含109个OWASP测试、31个PortSwigger攻击技术指南、68 + MCP工具、27个安全工具、4个专门的代理角色、7个结构化阶段、自动化质量保证以及零上下文最终审查。

🚀 快速开始

前提条件

  • Docker(macOS/Windows使用Docker Desktop,Linux使用Docker Engine)
  • Claude Code CLI,并拥有有效的Anthropic API密钥
  • uv(MCP服务器的Python包管理器)
  • Node.js(用于Playwright MCP服务器)
  • 可选Burp Suite Professional,用于被动流量监控

安装

# 1. 克隆仓库
git clone https://github.com/bhavsec/autopentest-ai.git
cd autopentest-ai

# 2. 为MCP服务器安装Python依赖项
cd server && uv sync && cd ..

# 3. 构建Docker镜像并启动工具容器
make setup

至此,所有27个安全工具已安装完毕,可在Docker容器中使用。

验证安装

# 检查所有工具是否安装
make verify-tools

# 预期输出:
# [+] nuclei: installed
# [+] httpx: installed
# [+] katana: installed
# ... (共27个工具)

开始测试

# 在项目目录中启动Claude Code
claude

然后告诉Claude要测试的目标:

Run a full WSTG assessment against https://target.example.com

✨ 主要特性

全面的OWASP覆盖

  • 109个WSTG测试用例,涵盖12个类别——从信息收集到API测试。
  • 每个测试都包含分步的CLI程序、特定上下文的有效负载、检测标准和严重性分级。
  • 测试按优先级(MUST/SHOULD)进行排序,并带有条件触发机制,确保不会遗漏任何相关内容。

31个PortSwigger攻击技术指南

  • 源自PortSwigger Web安全学院——包含检测方法、利用技术、有效负载、速查表和WAF绕过模式。
  • 按漏洞类别(SQLi、XSS、SSRF、JWT、OAuth等)组织,方便在测试期间直接使用。
  • 集成到每个测试阶段——代理在测试每个漏洞类别之前会自动加载相关的技术指南。
  • 特定数据库/平台的有效负载表(如SQLi的Oracle、MySQL、PostgreSQL、MSSQL,SSTI的Jinja2、Twig、Freemarker等)。
  • 按绕过级别(基本→中级→高级)组织的WAF绕过模式。

27个预配置的安全工具

  • 所有工具都预先安装在单个Docker镜像中——运行make setup即可使用。
  • 工具按阶段组织:发现、注入测试、身份验证、加密、API测试。
  • 自动集成Burp Suite代理,用于被动流量监控。

结构化的7阶段工作流程

  • 阶段0:应用程序发现与映射
  • 阶段1:信息收集与侦察
  • 阶段2:配置与部署测试
  • 阶段3:身份、认证、授权与会话管理
  • 阶段4:输入验证测试(流水线式XSS/SQLi/SSRF管道)
  • 阶段5:错误处理、加密、业务逻辑、客户端和API测试
  • 阶段6:覆盖验证与报告
  • 阶段7:最终评审与修复

质量保证系统

  • 自动化阶段门——每个阶段必须通过质量检查才能继续。
  • 质量评审员子代理在每个阶段转换时识别差距并提出改进建议。
  • 最终评审员——一个零上下文代理,像外部QA评审员一样对整个测试进行冷评审。
  • 穷尽门——标记为“无漏洞”需要有足够的测试证据(最少技术和绕过尝试)。

基于证据的发现

  • 每个发现都需要可重现的curl命令和完整的请求/响应证据。
  • 三级分类:已利用(已证明影响)、潜在(被控制阻止)、误报(控制有效)。
  • 反幻觉框架——在每个级别都强制执行“无利用 = 无发现”。
  • 在记录任何发现之前,会验证每个漏洞类别的证据清单。

特定角色的子代理

  • 4个专用角色,具有专注的提示模板、工具指导和反模式:
    • 侦察员——仅进行侦察,在不发送有效负载的情况下映射攻击面(阶段0 - 1)。
    • 分析员——使用金丝雀/见证有效负载识别潜在漏洞,构建利用队列(阶段2 - 5分析)。
    • 攻击者——使用分析员的输出,用证据证明利用,并记录确认的发现(阶段4利用)。
    • 报告员——质量评审和最终评审,在不发送请求的情况下审查数据(QA + 报告后)。
  • 分析和利用之间的验证检查点可防止浪费精力。
  • 每个角色都有明确的允许/限制工具列表和输入/输出合同。

流水线式利用(阶段4)

  • 3个独立的两阶段管道并行运行:XSS、注入(SQLi/CMDi)、SSRF/SSTI。
  • 每个管道:分析员(发现→分析→排队)→验证检查点→攻击者(利用→记录)。
  • 每个管道加载其PortSwigger技术指南,用于检测方法、速查表和WAF绕过模式。
  • WAF情报在所有管道中共享。
  • 针对13种漏洞类型的上下文感知见证有效负载。

自适应WAF规避

  • 自动WAF指纹识别,从响应头、主体和状态码中识别12个WAF供应商(Cloudflare、AWS WAF、Akamai、Imperva、ModSecurity、F5、FortiWeb、Sucuri、Barracuda、Wordfence、NAXSI、Citrix)。
  • 特定供应商的绕过有效负载,按复杂度级别(基本→中级→高级)组织。
  • WAF情报通过可交付系统在所有代理之间共享。
  • 代理在首次收到阻止响应时自动识别WAF,并切换到定制的绕过有效负载。

跨阶段知识图

  • 实体关系图跟踪端点、参数、技术、发现、cookie、域和用户角色。
  • 自动漏洞链通过BFS路径查找,使用7个预定义的链模式:
    • XSS + 缺少CSP,XSS + 弱cookie(无HttpOnly),开放重定向 + OAuth回调
    • IDOR + 管理员角色,SSRF + 云元数据,无锁定 + 无MFA,CORS + 敏感端点
  • 当链显著增加影响时,提高严重性级别。
  • 在测试过程中填充,在阶段4后查询以发现链。

分层任务树

  • 持久的树结构(阶段作为分支,测试作为叶子)防止LLM深度优先偏差和上下文丢失。
  • 主代理维护战略宏观视图;子代理仅更新其分配的叶子节点。
  • 自动传播:当所有子节点完成时,父节点自动完成。
  • 阶段级完成百分比,便于决策。

端点风险优先级排序

  • 按风险对端点进行评分和排序,优先测试高风险端点。
  • 评分因素:参数数量、技术风险指标、污点链置信度、工具收敛性、认证要求、可注入参数名称。
  • 集成到阶段0的端点映射生成中。

工具输出解析

  • 13个内置解析器,用于常见的CLI工具(nmap、nuclei、sqlmap、ffuf、httpx、whatweb、testssl、nikto、dalfox、katana、gau、wapiti、commix)。
  • 将原始工具输出压缩3 - 5倍,同时保留关键发现、端点和错误。
  • 可配置的详细程度:摘要(约15行)、详细(约50行)、完整(完整解析输出)。

CLI工具结果验证

  • 自动验证CLI工具输出质量——检测空输出、代理错误、权限问题和可疑结果。
  • 10个针对每个工具的验证器(nmap、nuclei、sqlmap、ffuf、feroxbuster、testssl、dalfox、wapiti、katana、httpx),并提供修正命令建议。
  • 当工具产生空或可疑输出时,验证器会建议修复措施(例如,为nmap添加-Pn,删除代理环境变量,尝试不同的标志)。
  • 集成到工具执行工作流程中——代理在每次运行CLI工具后调用verify_tool_result()

渐进式上下文压缩

  • 阶段摘要(约500 - 800字)在阶段门通过时自动生成——以压缩形式捕获发现、覆盖范围、工具结果和攻击面。
  • 通过用结构化摘要替换原始历史数据,防止长时间测试中的上下文退化。
  • get_engagement_summary()将所有阶段摘要合并为一个单一概述,用于注入新的子代理提示。
  • 摘要作为可交付成果存储——任何下游代理都可以访问,而无需完整的测试历史记录。

反事实分析(二次发现)

  • 在分析员发现漏洞后,会生成一个第二个分析员,并指示其“假设这些漏洞已修复”。
  • 反事实分析员会搜索额外的漏洞:不同的端点、不同的参数、不同的注入上下文、逻辑缺陷。
  • 结果会附加到现有的利用队列中(通过端点+参数自动去重并自动递增ID)。
  • 基于PenHeal消融研究,显示通过反事实提示可提高71%的漏洞覆盖率。

多域支持

  • 自动检测和处理SSO/OAuth/OIDC/SAML。
  • 按域进行范围注册、爬取和测试。
  • 管理跨域会话持久性的cookie jar。
  • 6级认证失败升级(替代授权→PKCE→无头浏览器→令牌提取→用户配置→未认证)。

崩溃安全的测试管理

  • 追加式的findings.mdprogress.log可在崩溃后幸存。
  • 具有回滚功能的Git工作区检查点。
  • 中断后自动恢复——resume-prompt.md在每个检查点自动生成,包含完整的上下文(目标、凭据、当前阶段、剩余测试、范围)。将其粘贴到新会话中即可从断点继续。
  • 阶段内检查点粒度——跟踪阶段内哪些测试已完成,而不仅仅是阶段级状态。
  • 每个MCP工具调用的完整审计跟踪,带有时间戳。

专业报告

  • Markdown报告,包含执行摘要、按严重性分类的发现、测试覆盖矩阵和工具覆盖情况。
  • 按类别划分的覆盖百分比和差距分析。
  • 记录漏洞链分析。
  • 包含最终评审员的观察和质量说明。

📦 安装指南

前提条件

  • Docker(macOS/Windows使用Docker Desktop,Linux使用Docker Engine)
  • Claude Code CLI,并拥有有效的Anthropic API密钥
  • uv(MCP服务器的Python包管理器)
  • Node.js(用于Playwright MCP服务器)
  • 可选Burp Suite Professional,用于被动流量监控

安装步骤

# 1. 克隆仓库
git clone https://github.com/bhavsec/autopentest-ai.git
cd autopentest-ai

# 2. 为MCP服务器安装Python依赖项
cd server && uv sync && cd ..

# 3. 构建Docker镜像并启动工具容器
make setup

验证安装

# 检查所有工具是否安装
make verify-tools

# 预期输出:
# [+] nuclei: installed
# [+] httpx: installed
# [+] katana: installed
# ... (共27个工具)

💻 使用示例

选项A:交互模式

启动Claude Code并提供目标:

Run a full pentest against https://app.example.com

Credentials: admin / P@ssw0rd123

Claude会询问任何缺失的信息(如凭据),并开始7阶段工作流程。

选项B:配置驱动模式(推荐)

创建一个YAML配置文件,用于可重复、一致的评估:

# configs/my-target.yaml
target:
  url: https://app.example.com
  scope:
    - app.example.com
    - api.example.com
  exclude:
    - cdn.example.com

authentication:
  login_type: form
  login_url: https://app.example.com/login
  credentials:
    username: testuser@example.com
    password: secret123
  login_flow:
    - "Type $username into the email field"
    - "Type $password into the password field"
    - "Click the 'Sign In' button"
  success_condition:
    type: url_contains
    value: "/dashboard"

rules:
  avoid:
    - description: "Do not test logout"
      type: path
      url_path: "/logout"
  focus:
    - description: "Prioritize API endpoints"
      type: path
      url_path: "/api"

reporting:
  tester_name: "Security Team"

然后在Claude Code中:

Load the config from configs/my-target.yaml and run the pentest

选项C:针对性测试

针对特定端点运行特定的WSTG测试:

Run WSTG-INPV-05 (SQL Injection) against https://app.example.com/search?q=
Test https://app.example.com for CORS misconfiguration (WSTG-CONF-13)
Run all authentication tests (WSTG-ATHN) against https://app.example.com

选项D:恢复中断的测试

Resume engagement pentest-2026-02-11-myapp

📚 详细文档

测试阶段

阶段0:应用程序发现与映射

这是关键的基础阶段。Claude自动执行以下操作:

  1. 预检——验证目标可达性,检测重定向和跨域认证。
  2. 并行启动10 + 后台工具(katana、ffuf、nuclei、whatweb、gau、nmap、feroxbuster、wapiti、httpx)。
  3. 递归爬取——跟随链接到深度2 - 3,解析HTML/JS以查找端点。
  4. 目录暴力破解——使用常见路径和特定技术的字典。
  5. 工具结果摄取——读取所有后台工具的输出,并合并到统一的端点映射中。
  6. 构建结构化端点清单,包含参数、认证要求和优先级排名。

输出:按域组织的完整端点映射,可用于系统测试。

阶段1 - 2:侦察与配置

  • 服务器指纹识别、技术检测、元数据审查。
  • 安全头分析(HSTS、CSP、CORS、X-Frame-Options)。
  • TLS配置测试、管理界面发现。
  • HTTP方法测试、文件扩展名处理。

阶段3:认证、授权与会话管理

  • 角色/权限格在测试前构建(映射防护、中间件和绕过测试)。
  • 对每个端点使用多个替代ID进行IDOR测试。
  • 在每个状态更改端点上进行CSRF测试。
  • 会话固定、劫持和令牌分析。
  • JWT漏洞测试(如果适用)。
  • OAuth/OIDC弱点测试(如果适用)。

阶段4:输入验证(高影响)

三个独立的两阶段管道并行运行,每个管道使用分析员→攻击者的角色划分: | 管道 | 漏洞类别 | 工具 | 技术指南 | |------|----------------------|-------|-----------------| | XSS管道 | 反射型XSS、存储型XSS、DOM XSS | dalfox、Playwright | XSS、DOM | | 注入管道 | SQL注入、命令注入、NoSQL注入 | sqlmap、commix、nosqli | SQLI、CMDI、NOSQLI | | SSRF/SSTI管道 | SSRF、SSTI、路径遍历 | sstimap、ssrfmap | SSRF、SSTI、PTRAV |

每个管道:分析员(发现→分析→构建利用队列)→验证检查点→攻击者(尝试利用→证明影响→记录发现)。WAF规避情报在所有管道中共享。

阶段5:错误处理、加密、业务逻辑、客户端和API

  • 堆栈跟踪和错误消息披露。
  • 通过testssl.sh进行TLS/SSL测试。
  • 业务逻辑绕过(工作流规避、请求伪造)。
  • 客户端测试(点击劫持、开放重定向、DOM操作)。
  • GraphQL和REST API测试。
  • 对所有发现进行漏洞链分析。

阶段6:报告

  • 覆盖验证(测试覆盖 + 工具覆盖)。
  • 发现去重和严重性校准。
  • 生成Markdown报告,包含执行摘要、发现、覆盖矩阵。

阶段7:最终评审

一个零上下文代理对整个测试进行冷评审——不了解测试决策或困难。它检查:

  • 覆盖完整性——盖章测试、缺失的端点。
  • N/A级联检测——过度标记为“不适用”的类别。
  • 发现质量——证据完整性、严重性一致性、链机会。
  • 工具利用率——运行但未审查输出的工具、懒惰跳过的原因。
  • 错过的攻击面——未测试的端点、未测试的参数、未测试的域。

裁决(通过/有条件通过/失败)会触发特定的修复措施,然后再交付报告。

安全工具

发现与侦察(阶段0)

| 工具 | 用途 | 关键标志 | |------|---------|-----------| | katana | 具有JS渲染功能的Web爬虫 | -jc用于JavaScript爬取 | | httpx | HTTP探测、技术检测 | -tech-detect -status-code -title | | ffuf | 目录/参数模糊测试 | -w wordlist -mc all -fc 404 | | feroxbuster | 递归目录枚举 | --smart --auto-tune | | nuclei | 基于模板的漏洞扫描器 | -t cves/ -t misconfigurations/ | | nikto | Web服务器配置错误检测 | -Tuning 1234567890 | | whatweb | 技术指纹识别 | --aggression 3 | | nmap | 端口和服务扫描 | -sV -sC --top-ports 1000 | | gau | 历史URL发现 | --blacklist png,jpg,gif | | subfinder | 子域枚举 | -silent -all |

注入测试(阶段4)

| 工具 | 用途 | 关键标志 | |------|---------|-----------| | sqlmap | SQL注入(所有技术) | --batch --risk 3 --level 5 | | dalfox | XSS扫描与利用 | --skip-bav --deep-domxss | | commix | 命令注入 | --batch --all | | sstimap | 服务器端模板注入 | -u <url> | | ssrfmap | SSRF利用 | -r request.txt | | nosqli | NoSQL注入 | -u <url> | | crlfuzz | CRLF注入/HTTP拆分 | -u <url> | | smuggler | HTTP请求走私 | -u <url> |

认证与会话(阶段3)

| 工具 | 用途 | 关键标志 | |------|---------|-----------| | hydra | 凭据暴力破解 | -L users.txt -P pass.txt | | jwt_tool | JWT令牌分析与利用 | -t <token> -M at |

加密与API(阶段5)

| 工具 | 用途 | 关键标志 | |------|---------|-----------| | testssl.sh | TLS/SSL配置测试 | --severity HIGH --sneaky | | graphql-cop | GraphQL安全测试 | -t <url> | | websocat | WebSocket测试 | ws://<url> |

基础设施(阶段2)

| 工具 | 用途 | |------|---------| | corscanner | CORS配置错误扫描 | | dnsreaper | 子域接管检测 |

浏览器自动化

| 工具 | 用途 | |------|---------| | Playwright | DOM XSS证明、点击劫持、JS渲染登录、客户端存储检查 |

WSTG知识库

涵盖12个OWASP类别的109个测试用例,每个用例都有特定的CLI程序: | 代码 | 类别 | 测试数量 | 示例 | |------|----------|:-----:|---------| | INFO | 信息收集 | 10 | 搜索引擎发现、服务器指纹识别、元数据审查 | | CONF | 配置与部署 | 14 | 安全头、CORS、CSP、HSTS、管理界面 | | IDNT | 身份管理 | 5 | 角色定义、注册、账户枚举 | | ATHN | 认证 | 11 | 默认凭据、锁定、认证绕过、MFA、密码策略 | | ATHZ | 授权 | 5 | 目录遍历、授权绕过、权限升级、IDOR | | SESS | 会话管理 | 11 | Cookie属性、CSRF、会话固定/劫持、JWT | | INPV | 输入验证 | 20 | XSS、SQLi、CMDi、SSTI、SSRF、路径遍历、XXE、LDAP | | ERRH | 错误处理 | 2 | 错误消息、堆栈跟踪 | | CRYP | 加密 | 4 | TLS配置、填充预言机、弱加密 | | BUSL | 业务逻辑 | 10 | 工作流绕过、请求伪造、文件上传、速率限制 | | CLNT | 客户端 | 14 | DOM XSS、点击劫持、开放重定向、WebSocket、存储 | | APIT | API测试 | 3 | GraphQL、REST、SOAP |

每个测试文件包括:

  • 分步的CLI程序(curl命令、工具调用)。
  • 按绕过级别(基本、中级、高级)组织的有效负载。
  • 带有严重性评估分级的检测标准。
  • 带有参考的修复指南。

PortSwigger技术指南

31个攻击技术参考指南源自PortSwigger Web安全学院,按漏洞类别组织,可直接用于实际渗透测试。

包含内容

| 代码 | 类别 | WSTG映射 | 关键内容 | |------|----------|-------------|-------------| | SQLI | SQL注入 | INPV - 05 | UNION/盲注/错误/时间/OOB技术、特定数据库的速查表(Oracle、MySQL、PostgreSQL、MSSQL)、WAF绕过 | | XSS | 跨站脚本攻击 | INPV - 01、INPV - 02、CLNT - 01 | 反射型/存储型/DOM上下文、标签和事件处理程序有效负载、CSP绕过、过滤器规避 | | CMDI | OS命令注入 | INPV - 12 | 分隔符字符、盲注技术(时间延迟、OOB)、特定操作系统的有效负载 | | SSTI | 服务器端模板注入 | INPV - 18 | Jinja2/Twig/Freemarker/Velocity/ERB检测与利用、沙箱逃逸 | | SSRF | 服务器端请求伪造 | INPV - 19 | URL方案技巧、IP混淆、DNS重绑定、云元数据、过滤器绕过 | | PTRAV | 路径遍历 | INPV - 04 | 编码变体、空字节注入、包装器绕过 | | XXE | XML外部实体 | INPV - 07 | 文件检索、通过XXE的SSRF、带有OOB的盲XXE、参数实体 | | AUTHN | 认证 | ATHN - 01到ATHN - 07 | 暴力破解、2FA绕过、密码重置中毒、凭据填充 | | AUTHZ | 访问控制 | ATHZ - 01到ATHZ - 04 | IDOR、权限升级、水平/垂直绕过、基于引用的控制 | | JWT | JSON Web令牌 | SESS - 10 | 算法混淆(none/HS256→RS256)、kid注入、JWK/JKU利用 | | OAUTH | OAuth 2.0 | ATHZ - 05 | 授权码窃取、开放重定向、范围升级、OAuth流程中的CSRF | | CSRF | 跨站请求伪造 | SESS - 05 | 令牌绕过、SameSite绕过、引用验证绕过 | | SMUGGLE | HTTP请求走私 | INPV - 15 | CL.TE、TE.CL、TE.TE、HTTP/2降级、请求隧道 | | DOM | 基于DOM的漏洞 | CLNT - 01 | 源/汇、DOM覆盖、原型污染小工具 | | CORS | 跨域资源共享 | CONF - 13、CLNT - 07 | 源反射、空源、子域信任利用 | | NOSQLI | NoSQL注入 | INPV - 05 | MongoDB操作符注入、JavaScript注入、盲提取 | | GRAPHQL | GraphQL | APIT - 01 | 内省、字段建议、批处理攻击、授权绕过 | | RACE | 竞态条件 | BUSL - 04 | 限制超限、TOCTOU、单端点竞赛、最后一帧同步 | | UPLOAD | 文件上传 | BUSL - 08、BUSL - 09 | 扩展名绕过、内容类型操作、Webshell、多用途文件 | | HOST | 主机头注入 | INPV - 17 | 密码重置中毒、缓存中毒、基于路由的SSRF |

另外还有11个:CLICK、WS、CACHEPOIS、CACHEDEC、DESER、INFO、BUSL、PROTO、API、LLM、SKILLS。

使用方法

技术指南通过get_technique_guide() MCP工具集成到每个测试阶段:

阶段2 → 用于CONF - 13测试的CORS指南
阶段3 → 用于认证/会话测试的AUTHN、AUTHZ、CSRF、JWT、OAUTH指南
阶段4 → 用于输入验证的SQLI、XSS、CMDI、SSTI、SSRF、PTRAV、XXE指南
阶段5 → 用于客户端和业务逻辑的DOM、CLICK、GRAPHQL、RACE、UPLOAD指南

每个并行测试代理在测试前自动加载其相关的技术指南,提供:

  • 检测有效负载——用于识别漏洞的注入内容。
  • 利用技术——按攻击方法组织,包含分步程序。
  • 速查表——特定数据库/平台的语法表,便于快速参考。
  • WAF绕过模式——编码、混淆和过滤器规避策略。

添加自定义指南

有关向知识库添加新技术指南的说明,请参阅docs/adding-knowledge-base-resources.md

质量保证系统

AutoPentest拥有多层次的质量保证系统,可防止浅尝辄止的测试:

1. 阶段门(自动化)

每个阶段结束后,phase_gate_check()验证:

  • 所有MUST优先级的测试都已执行。
  • 达到最低覆盖阈值。
  • 工具覆盖足够。
  • 不存在关键差距。

被阻止的阶段在所有问题解决之前无法继续

2. 质量评审员(每个阶段)

在每个阶段转换时生成的子代理,它:

  • 检查16种已知的反模式(盖章测试、N/A级联、发现膨胀)。
  • 识别未测试的端点和参数。
  • 建议漏洞链机会。
  • 为被阻止的测试推荐替代方法。

3. 最终评审员(报告后)

一个零上下文代理,以全新的视角审查完成的测试:

  • 分析所有域的覆盖完整性。
  • 检测N/A级联及其根本原因。
  • 验证发现质量和证据完整性。
  • 识别错过的攻击面。
  • 给出裁决:通过有条件通过失败

4. 穷尽门

将漏洞标记为“不可利用”需要有努力的证据: | 漏洞类别 | 最小技术数量 | 最小绕过尝试次数 | |------------|:-:|:-:| | XSS | 3 | 5 | | SQL注入 | 3 | 5 | | 命令注入 | 3 | 5 | | SSTI | 2 | 3 | | SSRF | 3 | 5 | | 路径遍历 | 3 | 5 |

5. 证据清单

在记录任何发现之前,会验证证据要求:

  • 可重现的curl命令。
  • 完整的HTTP请求和响应。
  • 实际利用的证明(不是理论影响)。
  • 正确的分类级别(已利用 vs 潜在)。

6. 实时测试日志

每个MCP工具调用都会自动记录到engagements/<eid>/logs.txt,包含完整的参数、结果和执行时间。在单独的终端中运行tail -f logs.txt,可以实时查看所有代理活动。通过自动工具包装器实现100%覆盖——无需手动插桩。

7. 阶段门时间

阶段门强制执行每次调用之间至少60秒的间隔(CTF模式下为15秒),防止过早完成阶段。如果连续门之间的工作事件少于3个,会发出门间工作验证警告。

基准测试

AutoPentest集成了XBOW验证基准——104个CTF风格的Docker挑战,用作AI渗透测试代理基准测试的行业标准。

基准分数(参考)

| 代理 | 分数 | 来源 | |-------|:-----:|--------| | Shannon | 96.2% | KeygraphHQ (2024) | | PentestGPT | 86.5% | USENIX Sec 2024 |

使用方法

# 一次性设置
cd benchmarks/xbow && make setup

# 使用AutoPentest解决(MCP服务器 + CLAUDE.md + CTF模式)
make solve ID=XBEN-001-24

# 使用原始Claude解决(基线 — 无MCP,无方法)
make solve ID=XBEN-001-24 RAW=1

# 按漏洞标签解决
make solve-tag TAG=sqli

# 解决所有104个挑战
make solve-all

# 完整的基线运行以进行比较
make solve-all RAW=1

# 对最新运行进行评分
make score

# 并排比较autopentest和原始运行
make compare

求解器有两种模式:

  • autopentest(默认):从项目根目录运行Claude Code,加载.mcp.json(具有68 + 工具的MCP服务器)和CLAUDE.md(渗透测试方法)。衡量AutoPentest的完整能力。
  • raw (RAW = 1):运行原始Claude Code,无MCP服务器或方法。用于衡量AutoPentest相对于原始LLM能力的附加值的基线。

每个挑战都是一个Docker Compose应用程序,在构建时注入了标志。从Claude的输出中提取标志来确定通过/失败。结果按每个挑战、每个标签和每个难度级别进行评分。

CTF模式

对于CTF挑战和小型应用程序,启用CTF模式以放宽质量门:

mode: ctf
target:
  url: https://target.com

CTF模式减少阶段门时间(15秒 vs 60秒),跳过QA评审员要求,并将完成阈值减半——同时保持发现质量和证据标准。

示例报告

仓库中包含了对PortSwigger的Gin & Juice Shop(一个故意存在漏洞的应用程序)进行渗透测试的完整示例报告:

查看完整报告

报告内容

该报告展示了AutoPentest对真实目标的输出,涵盖所有严重级别的23个发现: | 严重级别 | 数量 | 示例 | |----------|:-----:|---------| | 关键 | 2 | 基于UNION的SQL注入,可进行完整数据提取;通过X - Original - URL头绕过访问控制 | | 高 | 5 | 通过JS字符串转义绕过的反射型XSS;订单详情的IDOR;具有本地文件读取功能的XXE;通过原型污染的DOM XSS | | 中 | 6 | 缺少安全头;无账户锁定;缺少CSP;CRLF注入;基于DOM的开放重定向 | | 低 | 5 | 基础设施信息泄露;过时的AngularJS;不安全的ALB cookie;弱TLS配置 | | 信息 | 5 | 合并重复项和主要发现的次要证据 |

报告结构

1. 执行摘要 —— 目标范围、发现摘要、域架构
2. 详细发现 —— 每个发现都有描述、证据(curl命令)和修复建议
3. 漏洞链分析 —— 跨发现分析(例如,XSS + 无CSP = 严重性升级)
4. 测试覆盖矩阵 —— 12个类别中每个类别的WSTG覆盖情况(100%)
5. 工具覆盖矩阵 —— 跟踪27个工具,其中8个被积极使用

示例发现(SQL注入)

报告中的一个关键SQL注入发现,带有完整的利用证据:

FINDING - 017: SQL Injection in /catalog category parameter — Full Data Extraction

Severity: Critical
WSTG Reference: WSTG - INPV - 05

The category parameter is vulnerable to UNION - based SQL injection.
The attacker can:
  1. Inject a single quote to cause a 500 error (confirming injection)
  2. Use UNION SELECT with 8 columns to extract arbitrary data
  3. Enumerate tables: PRODUCTS, TRACKING, USERS
  4. Extract credentials from the USERS table

Evidence (reproducible curl command):
  curl -sk "https://ginandjuice.shop/catalog?category='+UNION+SELECT+1,USERNAME,PASSWORD,
  1,1,USERNAME,1,USERNAME+FROM+USERS+LIMIT+10--"

每个发现都包含可重现的curl命令、完整的请求/响应证据和可操作的修复建议。

配置

测试配置(YAML)

基于配置的渗透测试可以跳过交互式问题,确保一致性:

target:
  url: https://app.example.com
  scope: [app.example.com, api.example.com]

authentication:
  login_type: sso                    # form | sso | api | manual | none
  login_url: https://app.example.com/login
  credentials:
    username: testuser
    password: secret123
  sso:
    provider: keycloak               # keycloak | auth0 | okta | azure_ad
    auth_domain: auth.example.com
    realm: myrealm
    client_id: my - app

rules:
  avoid:
    - { type: path, url_path: "/logout", description: "Skip logout" }
    - { type: endpoint, method: DELETE, url_path: "/api/admin/*", description: "No destructive admin ops" }
  focus:
    - { type: path, url_path: "/api", description: "Prioritize API" }

reporting:
  tester_name: "Security Team"

MCP服务器配置

.mcp.json文件注册了两个MCP服务器:

{
  "mcpServers": {
    "wstg - pentest": {
      "command": "uv",
      "args": ["--directory", "./server", "run", "server.py"]
    },
    "playwright": {
      "command": "npx",
      "args": ["-y", "@playwright/mcp"]
    }
  }
}

Burp Suite集成(可选)

要通过Burp Suite Professional进行被动流量监控:

  1. 启动Burp Suite并在所有接口上启用代理(0.0.0.0:8080)。
  2. Docker容器会自动将流量路由到host.docker.internal:8080
  3. 所有HTTP请求都会出现在Burp的代理历史记录中,以便手动审查。

多域测试

AutoPentest对具有多个域的应用程序(例如,SPA前端 + API后端 + SSO提供商)提供一流的支持:

自动检测

在阶段0期间,AutoPentest通过跟踪登录重定向来检测跨域认证:

app.example.com → redirects to → auth.example.com/login
                 → after login → app.example.com/callback

所有域都会自动注册到范围内,并标明其类型(应用程序、认证提供商、API、CDN)。

按域测试

每个WSTG测试都会按域进行评估——而不仅仅是主域:

  • 发现工具(katana、ffuf、nuclei)会对所有域运行。
  • 输入验证工具(sqlmap、dalfox)会针对每个具有服务器端处理的域上的端点。
  • 只有当没有域具有被测试的功能时,测试才会被标记为“不适用”。

跨域认证

支持的SSO协议:

  • OAuth 2.0 / OIDC(授权码、PKCE、密码授予、客户端凭据)
  • SAML(SP发起的流程)
  • KeycloakAuth0OktaAzure AD
  • 自定义SSO(跟随重定向链并管理cookie jar)

认证升级程序(6级)确保即使在复杂的认证流程下也能继续测试。

崩溃恢复

AutoPentest设计为能够在中断后继续运行:

自动检查点

  • 阶段门在通过时自动保存检查点。
  • git_checkpoint()创建测试工作区的Git快照。
  • 追加式日志(findings.mdprogress.log)在崩溃后仍然可用。

通过resume - prompt.md自动恢复(推荐)

每个检查点和阶段门都会自动生成engagements/<eid>/resume - prompt.md——一个完整的、自包含的提示,包含新会话所需的所有信息:

  • 目标URL、认证凭据和范围域。
  • 当前阶段和剩余的特定测试(阶段内精度)。
  • cookie jar状态和重新认证说明。
  • 避免/聚焦规则和端点映射引用。

中断后恢复的步骤

  1. 打开一个新的Claude Code会话。
  2. 粘贴engagements/<eid>/resume - prompt.md的内容。
  3. Claude会从断点继续,无需手动设置上下文。

从检查点恢复(替代方法)

Resume engagement pentest - 2026 - 02 - 11 - myapp

这将恢复:

  • 所有发现和测试跟踪数据。
  • 覆盖统计和阶段门结果。
  • 范围注册和可交付成果。
  • 阶段内剩余的测试(不仅仅是阶段级状态)。
  • 下一步操作说明。

手动检查点

随时保存:

Save a checkpoint before starting Phase 4 exploitation

失败时回滚

如果某个阶段产生了不良结果,可以回滚到上一个检查点:

Roll back the engagement to the last checkpoint

项目结构

autopentest - ai/
├── CLAUDE.md                          # 主渗透测试工作流(驱动Claude Code)
├── .mcp.json                          # MCP服务器配置
├── Dockerfile                         # 多阶段Docker构建(27个工具)
├── docker - compose.yml                 # Docker Compose替代方案
├── Makefile                           # setup, start, stop, verify - tools, shell
│
├── server/
│   ├── server.py                      # FastMCP服务器(68 + MCP工具)
│   ├── task_tree.py                   # 分层任务树(6个MCP工具)
│   ├── tool_parsers.py                # 工具输出解析(2个MCP工具,13个解析器)
│   ├── endpoint_priority.py           # 端点风险优先级排序(2个MCP工具)
│   ├── waf_evasion.py                 # 自适应WAF规避(3个MCP工具,12个供应商)
│   ├── knowledge_graph.py             # 跨阶段知识图(5个MCP工具)
│   ├── tool_verification.py           # CLI工具结果验证(1个MCP工具,10个验证器)
│   ├── context_compression.py         # 渐进式上下文压缩(2个MCP工具)
│   └── pyproject.toml                 # Python依赖项
│
├── knowledge - base/
│   ├── web - security - testing - guide/    # OWASP WSTG知识库(109个测试程序)
│   │   ├── 01 - information - gathering/  # 10个测试(WSTG - INFO - 01 → 10)
│   │   ├── 02 - configuration/          # 14个测试(WSTG - CONF - 01 → 14)
│   │   ├── 03 - identity - management/    # 5个测试  (WSTG - IDNT - 01 → 05)
│   │   ├── 04 - authentication/         # 11个测试(WSTG - ATHN - 01 → 11)
│   │   ├── 05 - authorization/          # 5个测试  (WSTG - ATHZ - 01 → 05)
│   │   ├── 06 - session - management/     # 11个测试(WSTG - SESS - 01 → 11)
│   │   ├── 07 - input - validation/       # 20个测试(WSTG - INPV - 01 → 20)
│   │   ├── 08 - error - handling/         # 2个测试  (WSTG - ERRH - 01 → 02)
│   │   ├── 09 - cryptography/           # 4个测试  (WSTG - CRYP - 01 → 04)
│   │   ├── 10 - business - logic/         # 10个测试(WSTG - BUSL - 01 → 10)
│   │   ├── 11 - client - side/            # 14个测试(WSTG - CLNT - 01 → 14)
│   │   └── 12 - api - testing/            # 3个测试  (WSTG - APIT - 01 → 03)
│   └── portswigger - academy/           # 31个PortSwigger攻击技术指南
│       ├── sql - injection.md           # UNION, blind, error - based, OOB, WAF bypass
│       ├── cross - site - scripting.md    # Reflected, stored, DOM, CSP bypass, filter evasion
│       ├── ssrf.md                    # URL schemes, cloud metadata, DNS rebinding
│       ├── ssti.md                    # Jinja2, Twig, Freemarker sandbox escapes
│       ├── jwt.md                     # Algorithm confusion, kid injection, JWK exploitation
│       ├── oauth.md                   # Auth code theft, redirect exploitation, scope upgrade
│       └── ... (31 total)             # One per vulnerability class
│
├── templates/                         # 测试指南和程序
│   ├── input - validation - guide.md      # 阶段4的分步程序
│   ├── testing - strategies.md          # 测试矩阵、链、并行策略
│   ├── cli - tools - guide.md             # 工具设置和Docker管理
│   ├── tools.md                       # 每个工具的命令参考
│   ├── quality - gates.md               # 阶段质量检查清单和反模式
│   ├── cross - domain - auth - guide.md     # SSO/OIDC/SAML程序
│   ├── source - code - analysis.md        # 安全聚焦的代码审查模板
│   ├── pipelined - testing.md           # 阶段4的流水线式利用策略
│   ├── agent - roles/                   # 特定角色的子代理模板
│   │   ├── README.md                  # 角色索引和选择指南
│   │   ├── scout.md                   # 侦察角色(阶段0 - 1)
│   │   ├── analyzer.md                # 漏洞发现角色(阶段2 - 5)
│   │   ├── exploiter.md               # 利用证明角色(阶段4)
│   │   └── reporter.md                # QA审查 + 最终评审角色
│   ├── shared/
│   │   ├── honesty - framework.md       # 反幻觉护栏
│   │   ├── exploit - classification.md  # 三级发现分类
│   │   ├── reproducibility.md         # 证据格式要求
│   │   └── scope - rules.md            # 避免/聚焦规则模板
│   └── wordlists/                     # 特定技术的模糊测试字典
│
├── benchmarks/
│   └── xbow/                              # XBOW基准套件(104个CTF挑战)
│       ├── runner.py                      # 挑战编排
│       ├── solver.py                      # 自动求解器(Claude Code CLI)
│       ├── Makefile                       # solve, solve - all, score, compare
│       └── results/                       # 运行报告
│
├── docs/
│   ├── ROADMAP.md                         # 竞争分析 + 改进路线图
│   └── adding - knowledge - base - resources.md # 添加新技术指南的指南
│
├── configs/
│   ├── example - config.yaml            # 示例测试配置
│   └── config - schema.md               # YAML模式文档
│
├── scripts/
│   ├── install - tools.sh               # Docker构建 + 容器启动
│   ├── browser - auth.py                # 无头Chromium认证(JS渲染的登录)
│   ├── pkce - auth.py                   # OAuth 2.0 PKCE流程自动化
│   └── status.sh                      # 测试状态仪表板
│
└── engagements/                       # 运行时输出(git忽略)
    └── <engagement - id>/
        ├── logs.txt                   # 实时测试日志(使用tail - f查看)
        ├── findings.md                # 追加式发现日志
        ├── progress.log               # 带时间戳的事件日志
        ├── resume - prompt.md           # 自动恢复提示(粘贴到新会话中)
        ├── report.md                  # 最终渗透测试报告
        ├── cookies.txt                # 跨域cookie jar
        └── tool - output/               # 原始CLI工具输出

🔧 技术细节

代理角色系统

AutoPentest使用4个专门的代理角色,而不是通用的子代理。每个角色都有一个专用的提示模板,包含专注的工具指导、输入/输出合同和反模式。

| 角色 | 模板 | 目的 | 阶段 | |------|----------|---------|--------| | 侦察员 | templates/agent - roles/scout.md | 侦察和攻击面映射 | 阶段0 - 1,源代码发现 | | 分析员 | templates/agent - roles/analyzer.md | 使用金丝雀/见证有效负载发现漏洞 | 阶段2 - 5分析 | | 攻击者 | templates/agent - roles/exploiter.md | 用证据证明利用 | 阶段4利用 | | 报告员 | templates/agent - roles/reporter.md | 质量审查和最终评审 | 阶段转换,报告后 |

管道工作原理

阶段4(高影响测试)为每个漏洞类别使用两阶段管道:

┌──────────────────────────────────────────────────────────────┐
│                    Pipeline 1: XSS                           │
│                                                              │
│  Analyzer (75 turns)          Exploiter (75 turns)           │
│  ┌─────────────────────┐      ┌─────────────────────┐        │
│  │ Discover endpoints  │      │ Load Analyzer queue │        │
│  │ Send canary payloads│─────▶│ Attempt exploitation│        │
│  │ Build exploit queue │ gate │ Prove impact        │        │
│  │ Save deliverable    │      │ Log findings        │        │
│  └─────────────────────┘      └─────────────────────┘        │
│                          ▲                                   │
│               validate_exploitation_queue()                  │
└──────────────────────────────────────────────────────────────┘

三个管道(XSS、注入、SSRF/SSTI)并行运行。分析员和攻击者之间的验证检查点确保只有格式良好的利用队列才能继续。

角色边界

每个角色都通过提示强制执行明确的工具限制:

  • 侦察员不能调用log_finding()或发送攻击有效负载。
  • 分析员可以记录配置发现(缺少头、弱cookie),但不能记录注入类发现。
  • 攻击者不能创建新队列——他们使用分析员生成的队列。
  • 报告员不能向目标发送HTTP请求——他们只审查数据。

对于CTF挑战和小型应用程序(<3个输入端点),可以使用传统的整体管道作为备用。

📄 许可证

免责声明

本工具仅用于授权的安全测试。 仅在获得明确许可的情况下使用AutoPentest对应用程序进行测试。未经授权访问计算机系统是违法的。作者不对本工具的任何滥用负责。

始终确保你具备以下条件:

  • 获得应用程序所有者的书面授权。
  • 明确界定可测试和不可测试的范围。
  • 了解测试环境(生产环境还是暂存环境)。
  • 为破坏性或敏感端点配置适当的避免规则。

基于 Model Context Protocol 构建

help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端