
pentest-ai v1.4.0
开源 AI 渗透测试工具,可验证每项发现。机器预言机会重新运行每个漏洞利用;通过验证的漏洞会附带一个证据胶囊,供你自行复现。

网站 · 快速开始 · 漏洞赏金 · 验证 · 文档 · 问题反馈
Pentest-AI 是一款开源的 AI 渗透测试与漏洞赏金工具,它将经过验证的发现与猜测严格区分开来。 它将 AI 客户端或模型接入真实的渗透测试工作流:调查 Web 应用、发现并复现漏洞,并使用机器预言机来验证漏洞利用是否真正有效。任何预言机无法证明的发现都会被标记为候选,而经过验证的发现则附带证明其有效的请求与响应。
你可以通过 MCP(Claude Code、Codex、Cursor、VS Code)、CLI 或 CI/CD 来使用它。模型负责驱动调查;独立的预言机决定一项发现是否获得已验证的判定,因此模型的猜测绝不会被伪装成结果。
专为授权漏洞赏金而构建: 每个项目对应一个配置文件,其中包含其范围、声明的速率以及你的研究员标识;试运行会在发送任何内容之前展示计划;报告草稿仅来自经过验证的发现。跳转到漏洞赏金工作流 →
快速开始
推荐:Codex 或 Claude Code
使用 Python 3.10 至 3.14,并首先安装 pipx。如有需要,运行 pipx ensurepath 并重新打开终端。pipx 会隔离 Pentest-AI 的依赖,并使其命令可在各个文件夹中使用。
pipx install ptai
ptai setup --mcp
请先安装你的 AI 客户端的 CLI。安装程序会在连接所有检测到的受支持客户端之前进行询问,包括已安装的 Codex 和 Claude Code。它会保留现有的注册信息。安装完成后请重启你的客户端。
该向导使用用户级设置。它不会安装客户端、让你登录、下载模型或配置 Ollama。你的 AI 客户端提供模型;MCP 服务器不需要单独的模型 API 密钥。使用 ptai setup --mcp --dry-run 预览更改。有关 Codex .codex/config.toml 和 Claude Code .mcp.json 的说明,请参阅单客户端和按仓库设置。
如需升级,请使用 pipx upgrade ptai。在已激活的现有虚拟环境中,也支持 python -m pip install --upgrade ptai;在将其注册到你的 AI 客户端后,请保持该环境可用。
替代方案:Ollama 和本地模型
按上述方式安装 Pentest-AI,但此路线跳过 MCP 设置。
安装并启动 Ollama,然后拉取一个支持工具调用的模型。使用 ollama list 查找其确切的已安装名称。
export PENTEST_AI_LLM_PROVIDER=ollama
export PENTEST_AI_MODEL="your-installed-model"
ptai start https://your-authorized-target.example --no-sync
在 PowerShell 中:
$env:PENTEST_AI_LLM_PROVIDER = "ollama"
$env:PENTEST_AI_MODEL = "your-installed-model"
ptai start https://your-authorized-target.example --no-sync
运行前请替换占位符。本地模型无需云端 API 密钥。 模型质量和可用内存会影响结果。有关端点配置,请参阅 模型指南。
试用内置演示
无需 API 密钥或外部目标。
pipx install ptai
ptai demo
该演示测试一个捆绑的易受攻击应用程序,回放其证明胶囊中的发现,并检查加固后的路由。在配置真实参与之前,请先检查证据工作流。
其他模型提供商
关于独立云模型和可选扫描器依赖项,请参阅安装指南和提供商指南。请将 API 密钥排除在源代码管理之外。
漏洞赏金自动化
漏洞赏金模式适用于允许自动化测试的项目。你为每个项目编写一个配置文件,包含其范围、声明的速率以及你的研究员标识。随后 --program 会将所有这些应用到每个请求,而 --dry-run 会打印计划而不发送任何内容。
# ~/.pentest-ai/programs/acme.toml
platform = "hackerone"
handle = "acme"
researcher = "your-h1-username" # sent on every request in X-Bug-Bounty
rps = 5.0 # the rate the program states
scope = ["*.acme.com", "api.acme.com"]
excluded = ["status.acme.com"]
scanners_allowed = true
allow_race = false
ptai start https://api.acme.com --program acme --dry-run # sends nothing
ptai start https://api.acme.com --program acme --auto-auth
ptai bounty-report <engagement-id> --program acme --output-dir drafts/
在 --program 下:
- 每个请求都受该项目的速率限制约束,外部工具也不例外。无法被限制在其速率份额内的工具会被跳过,扫描会说明这一点。
- 范围仅来自配置文件,不来自其他任何地方。范围外的请求会被拒绝,排除项优先于通配符。
- 每个请求都在
X-Bug-Bounty中携带你的研究员标识,或在项目指定的标头中携带(PTAI_BOUNTY_HEADER_NAME)。 - gobuster 和 ffuf 等字典工具会被拒绝。两个内置的发现探测仍会尝试一组可能的路径,约 500 个请求。
- 不会发送旨在耗尽或使目标崩溃的载荷。会更改其他用户账户或共享状态的探测不会运行。竞态条件突发仅在配置文件设置
allow_race = true时运行。 429和Retry-After会被遵守。变慢的目标会获得更低的速率,持续降级的目标会停止扫描并记录原因。- 禁止扫描器的项目需要输入
yes,因为扫描它可能使安全港失效。
ptai bounty-report 仅根据 oracle 验证的发现起草报告,复现步骤取自 oracle 自身的请求。请手动复现每一个并自行提交。ptai bounty import 将项目导出的范围文件转换为配置文件的允许和排除条目。
实际耗时等于请求数除以速率。在我们的测试应用上,以 3 rps 完整运行一遍约 8,700 个请求,耗时 51 分钟,并能找到 10 rps 运行所找到的每一个严重和高危问题。在 10 rps 下约为 6,600 个请求和 11 分钟,这是在慢速探测获得足够时间在低速率下完成之前测量的。
按到达时间计数,在 3 或 10 rps 下没有任何一秒超过声明的速率,包括外部工具发送的请求。
验证如何工作
- 发现候选。 探测或扫描器识别出值得调查的行为。
- 复现并检查对照。 指定的 oracle 重复利用,并与一个不应表现出该弱点的对照进行比较。
- 保留证据。 已验证的发现会记录 oracle、它发送的请求以及它判定的响应。
ptai retest再次扫描目标,ptai diff显示变化。ptai demo显示一个可移植的证明胶囊,ptai replay会重新检查它。
例如,可信标头绕过必须在带有攻击标头时返回特权内容,并在没有该标头时拒绝访问。对每个请求都返回 HTTP 200 的服务器不足以作为证据。
模型无法授予已验证的判定。 第三方扫描器输出在 oracle 独立证明之前保持未验证。没有受支持的验证配方的发现仍为候选。
已验证的判定适用于所测试的条件。它并不意味着整个应用是安全的。证明胶囊未签名。重新运行检查才是信任机制。
你可以做什么
| 工作流 | Pentest-AI 提供什么 |
|---|---|
| 调查 Web 应用 | 针对注入、访问控制、请求处理及其他应用弱点的探测 |
| 开展漏洞赏金项目 | 将扫描限制在项目的范围和速率内,然后根据已验证的发现起草报告(指南) |
| 通过 AI 客户端工作 | 用于项目、调查和验证的 MCP 工具 |
| 复现发现 | Oracle 结果和可重放的证明胶囊 |
| 检查修复 | 针对更新后的目标重新运行记录的检查 |
| 向团队报告 | 用于现有工程工作流的报告和 SARIF 输出 |
| 将项目数据保留在本地 | 发现存储在你机器上的 SQLite 中 |
覆盖范围因探针和 oracle 而异。可选扫描器需要各自的二进制文件,部分集成提供的是原始输出而非结构化发现结果。请查阅适用于你所使用版本的文档和变更日志;main 分支可能包含尚未发布的工作。
将已验证的发现结果接入 CI
在 CI 环境中配置你的模型提供方、一个已授权的目标以及首次运行同意。请将密钥保存在 CI 提供方的密钥存储中。
ptai start https://your-authorized-target.example --ci --fail-on verified --no-sync
使用本次运行中的 engagement ID 导出已验证的发现:
ptai export YOUR_ENGAGEMENT_ID --sarif pentest.sarif
--sarif 是一个导出选项,而不是 ptai start 的选项。如果你需要为失败的构建保留证据,即使发现门禁失败,也要保留 engagement ID 并运行导出。通过你的 CI 提供商的 SARIF 集成上传生成的文件。
证据、基准测试与限制
基准测试发现、挑战完成情况和 oracle 验证的发现是不同的度量。这些报告记录了其结果背后的版本、目标和方法论:
预期覆盖不完整。 没有已验证发现的扫描并不等于对应用程序所有行为的安全评估。身份验证、应用程序状态、不支持的缺陷类别和环境变化都会影响能够发现和复现的内容。请审查结果,并让人员参与 engagement。
数据与网络行为
发现结果存储在本地。匿名使用计数器通过 ptai telemetry enable 选择加入。
本地存储并不意味着每个操作都留在你的机器上:模型提供商调用和已安装的扫描器有其自身的网络行为。盲漏洞检查可以使用外部带外协作者;回调元数据对该服务可见。
在需要时使用你自己的协作者,或禁用回调:
ptai start https://your-authorized-target.example --oast-server https://your-collaborator.example
ptai start https://your-authorized-target.example --no-oast
参与贡献
对于可复现的缺陷,请使用 Issues;对于问题和想法,请使用 Discussions。有关构建和测试的说明,请参阅智能体与贡献者指南。
可选的 pentest-ai-agents 仓库包含 Claude Code 子智能体文件。
Pentest-AI 是基于 MIT 许可证 的开源项目。