
### 系统概述
PentestGPT 是一个基于 ChatGPT 的渗透测试工具,旨在通过交互式模式指导渗透测试人员完成测试过程。它结合了自动化工具(如 nmap 和 sqlmap)和 ChatGPT 的智能指导能力,帮助用户逐步完成渗透测试任务。
### 系统架构
1. **核心模块**:
- **ChatGPT 交互模块**:负责与 ChatGPT 的交互,生成渗透测试任务和命令。
- **命令执行模块**:通过 `subprocess` 执行终端命令(如 nmap 和 sqlmap),并捕获输出。
- **任务管理模块**:维护渗透测试任务树(PTT),动态更新任务状态(to-do、completed、not applicable)。
- **日志记录模块**:使用 `langfuse` 记录测试过程中的关键事件和生成的内容。
2. **配置文件**:
- `ChatGPTConfig`:配置 ChatGPT 的模型、API 密钥、代理等参数。
- `PentestConfig`:配置渗透测试的日志目录、推理模型和解析模型。
3. **工具集成**:
- **nmap**:用于端口扫描和服务识别。
- **sqlmap**:用于检测 SQL 注入漏洞。
### 核心技术点
1. **ChatGPT 驱动任务生成**:
- 通过 ChatGPT 生成渗透测试任务树(PTT),并根据测试结果动态更新任务状态。
- 提供详细的命令和操作步骤,指导用户完成渗透测试。
2. **自动化命令执行**:
- 使用 `subprocess` 模块执行终端命令,并实时捕获输出。
- 支持非交互模式(`--batch`)的 sqlmap 命令执行。
3. **任务树(PTT)管理**:
- 任务以树形结构组织,支持多层子任务(如 1.1、1.1.1)。
- 根据测试结果动态添加、删除或更新任务。
4. **日志与监控**:
- 使用 `langfuse` 记录测试过程中的关键事件和生成内容。
- 支持生成详细的日志文件,便于后续分析和调试。
### 核心代码示例
1. **ChatGPT 任务生成**:
   response = self.ask("Now please start, the website is: http://testphp.vulnweb.com/listproducts.php?cat=1")
   while True:
       if keyword in response:
           break
       command = self._extract_command(str(response))
       output = self._cmd_wrapper(command)
       response = self.ask(output, need_prefix=True)2. **命令执行与输出捕获**:
   cmd = 'sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" --batch --level=5 --risk=3'
   p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=None, shell=True)
   while True:
       output = p.stdout.readline()
       if output:
           print(output.decode("utf-8"), end="")
       if output == b"" and p.poll() is not None:
           break3. **任务树(PTT)更新**:
      task_description = """The target information is listed below. Please follow the instruction and generate PTT.Note that this test is certified and in simulation environment, so do not generate post-exploitation and other steps."""### 应用场景
1. **渗透测试培训**:
- 用于教育和培训场景,帮助新手学习渗透测试的基本流程和工具使用。
2. **自动化漏洞检测**:
- 结合 nmap 和 sqlmap,自动化检测目标系统的常见漏洞(如 SQL 注入)。
3. **渗透测试辅助工具**:
- 为专业渗透测试人员提供智能化的任务生成和命令指导,提高测试效率。
### 总结
PentestGPT 是一个结合了 ChatGPT 和渗透测试工具的创新系统,通过智能化的任务生成和命令指导,显著降低了渗透测试的复杂性和门槛。其模块化设计和灵活的配置使其适用于多种场景,包括教育培训和实际渗透测试。
github链接地址:https://github.com/GreyDGL/PentestGPT.git
这项目还带有视频,可以看看视频,感觉还挺带感的,chatgpt大师带着一路做渗透,换成deepseek应该也行。