PentestGPT 上手指南:从 Docker 部署到跑通第一次 AI 渗透测试
【免费下载链接】PentestGPTAutomated Penetration Testing Agentic Framework Powered by Large Language Models项目地址: https://gitcode.com/GitHub_Trending/pe/PentestGPT
PentestGPT 是一个由大语言模型驱动的自动化渗透测试框架:给它一个目标,它能以自主或交互方式完成侦察、漏洞识别、利用验证到报告输出的完整流程。本文基于仓库内真实存在的命令与文档,带你走完环境准备、部署、验证、进阶配置到排错的全过程,每一步都说明目的和预期结果。
项目定位:PentestGPT 能替你做什么
PentestGPT 提供两种工作模式,适合不同使用深度的人:
- 自主模式(
pentestgpt_agent/):由 Claude Code 或 Codex 作为推理后端,无需人工干预地驱动工具执行渗透流程,支持保存与恢复会话。 - 交互模式(
pentestgpt_legacy/):USENIX Security 2024 论文中的"人在环"工作流的现代化版本,你在会话中通过next、more、todo、discuss等指令引导三轮协作的 LLM 会话推进任务。
两者都覆盖 Web、密码学、逆向、取证、PWN、权限提升等多类挑战。自主模式按多阶段管线工作:CTF 场景为侦察 → 利用 → 复盘,真实渗透场景为资产发现 → 漏洞识别 → 报告。需要说明的是,README 中提到的 86.5%(90/104)XBOW 验证套件成绩是 2025 年 12 月的历史研究结果,且 XBOW 基准运行器并不在产品仓库内,不应把它当作当前的性能保证。
部署前检查:环境要求与模型后端选择
开始之前,先确认你走哪条路径,这决定了要准备什么:
本地运行路径(适合开发框架或直接在宿主机测试):需要 Python 3.12+、Python 包管理器 uv,以及已登录认证的 Claude Code CLI(claude)或 Codex CLI(codex)之一。
Docker 路径(适合一次性容器化使用):只需 Docker 在运行。镜像自带 Ubuntu 24.04、Python 3.12、Node 20、uv、Claude Code 和 Codex,以及 nmap、gobuster、dirb、netcat、curl 等常用测试工具。参考 docker-compose.yml 中的资源配置:保证 2 核 CPU / 4GB 内存,上限 4 核 / 8GB,内存不足时复杂任务容易受限。
选择建议:如果你只是想在隔离环境里体验完整流程,选 Docker 路径并登录 Claude 或 Codex 账号即可;如果你要频繁改代码、跑测试,选本地路径;如果只想用本地模型(如 Ollama),走交互模式 + OpenAI 兼容接口最省事,见下文进阶配置。
最短上手路径
只需四步。每步命令都很短,预期结果写在后面。
1. 获取代码
git clone https://gitcode.com/GitHub_Trending/pe/PentestGPT cd PentestGPT克隆仓库并进入目录。如果克隆时使用了--recurse-submodules之外的方式且缺少子模块,可补跑git submodule update --init --recursive。
2. 安装依赖
make install执行uv sync安装根项目与pentestgpt_agent/子项目的依赖。预期是依赖安装完成、无报错。
3. 完成认证(Docker 路径)
make docker-build make docker-login第一条构建工具镜像;第二条一次性登录 Claude(setup-token 存入卷)和 Codex(容器内 OAuth),登录状态持久化到命名卷,之后重建容器无需重复登录。该命令是幂等的,重跑会跳过仍有效的登录。本地路径下则跳过此步,确保claude或codexCLI 已认证。
4. 跑第一次测试
make run TARGET=http://127.0.0.1:8000 BACKEND=claude在本地环境对指定目标启动自主管线,BACKEND 可选claude或codex。也可以直接用经典 CLI:
pentestgpt --target 10.10.11.234 pentestgpt --target 10.10.11.50 --instruction "WordPress site, focus on plugin vulnerabilities"第一条以默认 CTF 模式运行;第二条通过--instruction提供目标上下文。真实渗透场景加--mode pentest切换为资产发现 → 漏洞 → 报告管线;pentestgpt --list-sessions可列出已保存的会话。
核心模块:对使用者意味着什么
仓库按"维护中 / 兼容保留"划分了目录,使用时主要关心前三者:
自主框架pentestgpt_agent/
这是一个嵌套的 uv 子项目,内部只有两个 LLM 角色:Supervisor 负责从当前状态中挑一个任务或宣布完成,Executor 负责执行这一个任务并返回类型化结果。确定性代码管理范围校验、租约、证据溯源与重试,SQLite 是权威记忆(而非模型对话历史)。对你而言,这意味着每次运行是可审计的:每个 episode 目录里有input.json(角色输入)、events.jsonl(工具与命令事件)、output.json(结果与用量)。
交互客户端pentestgpt_legacy/
保留了论文中的人工驱动流程,原生对接多家提供商的官方 SDK。模型注册表在 pentestgpt_legacy/llm/registry.py,新增模型只是一条ModelSpec条目。
文档与脚本
docs/architecture.md 是当前仓库结构的事实来源,docs/docker-dev-plan.md 记录 Docker 镜像与认证卷的现状。scripts/ 下有docker-login.sh、docker-auth-status.sh和 CCR 配置模板,部署排错时最常用到。
进阶配置:登录管理、本地模型与遥测
Docker 登录管理
make docker-auth-status ROUNDTRIP=1 make docker-auth-status make docker-down make docker-nuke第一条检查两个 CLI 是否都已登录;加ROUNDTRIP=1会消耗一个极小的 provider 调用做实时验证。docker-down停止容器但保留登录卷;docker-nuke删除登录卷,用于强制重新登录或轮换 token。
本地模型(Ollama 等 OpenAI 兼容服务)
交互模式可直接指定本地模型与地址:
pentestgpt-legacy --reasoning-model ollama:qwen3 --base-url http://localhost:11434/v1如果要让 Claude Code 走本地服务,参考 scripts/ccr-config-template.json:其中localLLM提供商的api_base_url默认为http://host.docker.internal:1234/v1/chat/completions(容器内访问宿主机不能用localhost),models字段列出服务器上可用的模型名,Router字段可配置不同模型处理不同操作。各提供商通过环境变量或.env启用,例如ANTHROPIC_API_KEY、OPENAI_API_KEY、GEMINI_API_KEY、QWEN_API_KEY,只配置了的提供商才会出现在可用列表中。
遥测关闭
工具默认向 Langfuse 发送匿名使用数据(不含命令输出、凭据或 flag 内容)。如需关闭:命令行加--no-telemetry,或设置LANGFUSE_ENABLED=false。
验证与排错
先确认部署是成功的
make check这条命令跑 lint、格式检查、类型检查与 agent 测试,全过说明环境健康。确认模型可用则用pentestgpt-legacy --list-models查看已配置的提供商与模型,再用pentestgpt-legacy --smoke-test对每个模型做一次真实往返并输出通过/失败矩阵。
按"现象 → 原因 → 处理"排错
| 现象 | 可能原因 | 处理方式 |
|---|---|---|
make docker-run报错退出 | 镜像尚未内置pentestgpt_agent框架(Makefile 中明确标注为待接线) | 按提示改用本地make run TARGET=...,这是当前的官方路径 |
| 重建容器后要求重新登录 | 登录卷被make docker-nuke或手动删除 | 重跑make docker-login |
| 容器内连不上宿主机本地模型服务 | 用了localhost,容器网络下指向容器自身 | 改用host.docker.internal(compose 已配置host-gateway映射) |
| 不确定 API key 或 token 是否有效 | 列表命令只反映配置,不反映连通性 | 跑--smoke-test或ROUNDTRIP=1 make docker-auth-status做实时验证 |
| 需要复盘某次运行 | 每次 episode 会落盘事件与结果 | 查看pentestgpt_agent运行目录下对应 episode 的events.jsonl与output.json |
注意:trace 文件包含目标输出等敏感内容,应像凭据一样对待,不要外传。
安全与合规提示
PentestGPT 的两个 LLM 角色都使用FULL_ACCESS权限,容器或专用攻击机本身就是隔离边界与爆炸半径。部署时应只包含已授权的目标路由,避免挂载无关的源码目录、家目录、token 或宿主机 socket,评估结束后及时拆解环境。该工具面向授权的安全测试、研究与教育用途,使用前请确认你拥有目标的合法测试权限,并遵守当地法律法规及目标平台的服务条款。项目基于 MIT 许可证发布,详见 LICENSE.md。
【免费下载链接】PentestGPTAutomated Penetration Testing Agentic Framework Powered by Large Language Models项目地址: https://gitcode.com/GitHub_Trending/pe/PentestGPT
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考