Add files via upload

This commit is contained in:
公明
2025-11-08 20:32:50 +08:00
committed by GitHub
parent add33e1cf7
commit 2bba007295
18 changed files with 1372 additions and 299 deletions
+121
View File
@@ -0,0 +1,121 @@
# 工具配置文件说明
## 概述
每个工具现在都有独立的配置文件,存放在 `tools/` 目录下。这种方式使得工具配置更加清晰、易于维护和管理。
## 配置文件格式
每个工具配置文件是一个 YAML 文件,包含以下字段:
### 必需字段
- `name`: 工具名称(唯一标识符)
- `command`: 要执行的命令
- `enabled`: 是否启用(true/false
### 可选字段
- `args`: 固定参数列表(数组)
- `short_description`: 简短描述(一句话说明工具用途,用于工具列表,减少token消耗)
- `description`: 工具详细描述(支持多行文本,用于工具文档和详细说明)
- `parameters`: 参数定义列表
## 工具描述
### 简短描述 (`short_description`)
- **用途**:用于工具列表,减少发送给大模型的token消耗
- **要求**:一句话(20-50字)说明工具的核心用途
- **示例**`"网络扫描工具,用于发现网络主机、开放端口和服务"`
### 详细描述 (`description`)
支持多行文本,应该包含:
1. **工具功能说明**:工具的主要功能
2. **使用场景**:什么情况下使用这个工具
3. **注意事项**:使用时的注意事项和警告
4. **示例**:使用示例(可选)
**重要说明**
- 工具列表发送给大模型时,使用 `short_description`(如果存在)
- 如果没有 `short_description`,系统会自动从 `description` 中提取第一行或前100个字符
- 详细描述可以通过 MCP 的 `resources/read` 接口获取(URI: `tool://tool_name`
这样可以大幅减少token消耗,特别是当工具数量很多时(如100个工具)。
## 参数定义
每个参数可以包含以下字段:
- `name`: 参数名称
- `type`: 参数类型(string, int, bool, array
- `description`: 参数详细描述(支持多行)
- `required`: 是否必需(true/false
- `default`: 默认值
- `flag`: 命令行标志(如 "-u", "--url"
- `position`: 位置参数的位置(整数)
- `format`: 参数格式("flag", "positional", "combined", "template"
- `template`: 模板字符串(用于 format="template"
- `options`: 可选值列表(用于枚举类型)
### 参数描述要求
参数描述应该包含:
1. **参数用途**:这个参数是做什么的
2. **格式要求**:参数值的格式要求
3. **示例值**:具体的示例值
4. **注意事项**:使用时需要注意的事项
## 示例
参考 `tools/` 目录下的现有工具配置文件:
- `nmap.yaml`: 网络扫描工具
- `sqlmap.yaml`: SQL注入检测工具
- `nikto.yaml`: Web服务器扫描工具
- `dirb.yaml`: Web目录扫描工具
- `exec.yaml`: 系统命令执行工具
## 添加新工具
要添加新工具,只需在 `tools/` 目录下创建一个新的 YAML 文件,例如 `my_tool.yaml`
```yaml
name: "my_tool"
command: "my-command"
enabled: true
short_description: "一句话说明工具用途" # 简短描述(推荐)
description: |
工具详细描述...
**功能:**
- 功能1
- 功能2
**使用场景:**
- 场景1
- 场景2
parameters:
- name: "param1"
type: "string"
description: |
参数详细描述...
**示例值:**
- "value1"
- "value2"
required: true
flag: "-p"
format: "flag"
```
保存文件后,重启服务即可自动加载新工具。
## 禁用工具
要禁用某个工具,只需将配置文件中的 `enabled` 字段设置为 `false`,或者直接删除/重命名配置文件。
+86
View File
@@ -0,0 +1,86 @@
name: "dirb"
command: "dirb"
enabled: true
# 简短描述(用于工具列表,减少token消耗)
short_description: "Web目录和文件扫描工具,通过暴力破解方式发现Web服务器上的隐藏目录和文件"
# 工具详细描述
description: |
Web目录和文件扫描工具,通过暴力破解方式发现Web服务器上的隐藏目录和文件。
**主要功能:**
- 目录和文件发现
- 支持自定义字典文件
- 检测常见的Web目录结构
- 识别备份文件、配置文件等敏感文件
- 支持多种HTTP方法
**使用场景:**
- Web应用目录枚举
- 发现隐藏的管理界面
- 查找备份文件和敏感信息
- 渗透测试中的信息收集
**注意事项:**
- 扫描可能产生大量HTTP请求
- 某些请求可能被WAF拦截
- 建议使用合适的字典文件以提高效率
- 扫描结果需要人工验证
# 参数定义
parameters:
- name: "url"
type: "string"
description: |
目标URL,要扫描的Web服务器地址。
**格式要求:**
- 必须包含协议(http:// 或 https://
- 可以包含基础路径
- 末尾不要带斜杠(除非要扫描特定目录)
**示例值:**
- 基础URL: "http://example.com"
- HTTPS: "https://example.com"
- 带端口: "http://example.com:8080"
- 特定目录: "http://example.com/admin"
- 带路径: "http://example.com/app"
**注意事项:**
- URL必须可访问
- 确保URL格式正确,包含协议前缀
- 必需参数,不能为空
required: true
position: 0
format: "positional"
- name: "wordlist"
type: "string"
description: |
字典文件路径,包含要尝试的目录和文件名列表。
**格式要求:**
- 文件路径,可以是绝对路径或相对路径
- 文件每行一个目录或文件名
- 支持常见的字典文件格式
**示例值:**
- 默认字典: "/usr/share/dirb/wordlists/common.txt"
- 自定义字典: "/path/to/custom-wordlist.txt"
- 常用字典: "/usr/share/wordlists/dirb/common.txt"
**常用字典文件:**
- common.txt: 常见目录和文件
- big.txt: 大型字典
- small.txt: 小型快速字典
- extensions_common.txt: 常见文件扩展名
**注意事项:**
- 如果不指定,将使用默认字典
- 确保字典文件存在且可读
- 大型字典会显著增加扫描时间
required: false
flag: "-w"
format: "flag"
+102
View File
@@ -0,0 +1,102 @@
name: "exec"
command: "sh"
args: ["-c"]
enabled: true
# 简短描述(用于工具列表,减少token消耗)
short_description: "系统命令执行工具,用于执行Shell命令和系统操作(谨慎使用)"
# 工具详细描述
description: |
系统命令执行工具,用于执行Shell命令和系统操作。
**主要功能:**
- 执行任意Shell命令
- 支持bash、sh等shell
- 可以指定工作目录
- 返回命令执行结果
**使用场景:**
- 系统管理和维护
- 自动化脚本执行
- 文件操作和处理
- 系统信息收集
**安全警告:**
- ⚠️ 此工具可以执行任意系统命令,存在安全风险
- ⚠️ 仅应在受控环境中使用
- ⚠️ 所有命令执行都会被记录
- ⚠️ 建议限制可执行的命令范围
- ⚠️ 不要执行不可信的命令
# 参数定义
parameters:
- name: "command"
type: "string"
description: |
要执行的系统命令。可以是任何有效的Shell命令。
**格式要求:**
- 完整的Shell命令
- 可以包含管道、重定向等Shell特性
- 支持环境变量
**示例值:**
- 简单命令: "ls -la"
- 带管道: "ps aux | grep nginx"
- 文件操作: "cat /etc/passwd"
- 网络命令: "curl http://example.com"
- 系统信息: "uname -a"
- 查找文件: "find /var/log -name '*.log'"
**注意事项:**
- 命令会在指定的shell中执行
- 确保命令语法正确
- 注意命令的安全影响
- 必需参数,不能为空
required: true
position: 0
format: "positional"
- name: "shell"
type: "string"
description: |
使用的Shell类型,默认为sh。
**可选值:**
- sh: 标准Shell(默认)
- bash: Bash Shell
- zsh: Z Shell
- 其他系统可用的shell
**示例值:**
- "sh" (默认)
- "bash"
- "zsh"
**注意事项:**
- 确保指定的shell在系统中可用
- 不同shell的命令语法可能略有差异
required: false
default: "sh"
- name: "workdir"
type: "string"
description: |
命令执行的工作目录。如果不指定,使用当前工作目录。
**格式要求:**
- 绝对路径或相对路径
- 目录必须存在
**示例值:**
- "/tmp"
- "/var/log"
- "./data"
- "/home/user/project"
**注意事项:**
- 确保目录存在且有访问权限
- 相对路径相对于程序运行目录
required: false
+58
View File
@@ -0,0 +1,58 @@
name: "nikto"
command: "nikto"
enabled: true
# 简短描述(用于工具列表,减少token消耗)
short_description: "Web服务器扫描工具,用于检测Web服务器和应用程序中的已知漏洞和配置错误"
# 工具详细描述
description: |
Web服务器扫描工具,用于检测Web服务器和应用程序中的已知漏洞、配置错误和潜在安全问题。
**主要功能:**
- 检测Web服务器版本和配置问题
- 识别已知的Web漏洞和CVE
- 检测危险文件和目录
- 检查服务器配置错误
- 识别过时的软件版本
- 检测默认文件和脚本
**使用场景:**
- Web应用安全评估
- 服务器配置审计
- 漏洞扫描和发现
- 渗透测试前期信息收集
**注意事项:**
- 扫描可能产生大量日志,注意日志管理
- 某些扫描可能触发WAF或IDS告警
- 建议在授权范围内使用
- 扫描结果需要人工验证
# 参数定义
parameters:
- name: "target"
type: "string"
description: |
目标URL或IP地址。可以是完整的URL或IP地址。
**格式要求:**
- 可以包含协议(http:// 或 https://
- 可以只提供IP地址或域名
- 如果只提供IP,默认使用http协议
**示例值:**
- 完整URL: "http://example.com"
- HTTPS: "https://example.com"
- IP地址: "192.168.1.1"
- 带端口: "http://example.com:8080"
- 带路径: "http://example.com/admin"
**注意事项:**
- 如果只提供IP,工具会使用http协议
- 建议提供完整URL以确保正确扫描
- 必需参数,不能为空
required: true
flag: "-h"
format: "flag"
+75
View File
@@ -0,0 +1,75 @@
name: "nmap"
command: "nmap"
args: ["-sT", "-sV", "-sC"] # 固定参数:TCP连接扫描、版本检测、默认脚本
enabled: true
# 简短描述(用于工具列表,减少token消耗)- 一句话说明工具用途
short_description: "网络扫描工具,用于发现网络主机、开放端口和服务"
# 工具详细描述 - 帮助大模型理解工具用途和使用场景
description: |
网络映射和端口扫描工具,用于发现网络中的主机、服务和开放端口。
**主要功能:**
- 主机发现:检测网络中的活动主机
- 端口扫描:识别目标主机上开放的端口
- 服务识别:检测运行在端口上的服务类型和版本
- 操作系统检测:识别目标主机的操作系统类型
- 漏洞检测:使用NSE脚本检测常见漏洞
**使用场景:**
- 网络资产发现和枚举
- 安全评估和渗透测试
- 网络故障排查
- 端口和服务审计
**注意事项:**
- 使用 -sT (TCP连接扫描) 而不是 -sS (SYN扫描),因为 -sS 需要root权限
- 扫描速度取决于网络延迟和目标响应
- 某些扫描可能被防火墙或IDS检测到
- 请确保有权限扫描目标网络
# 参数定义
parameters:
- name: "target"
type: "string"
description: |
目标IP地址或域名。可以是单个IP、IP范围、CIDR格式或域名。
**示例值:**
- 单个IP: "192.168.1.1"
- IP范围: "192.168.1.1-100"
- CIDR: "192.168.1.0/24"
- 域名: "example.com"
- URL: "https://example.com" (会自动提取域名部分)
**注意事项:**
- 如果提供URL,会自动提取域名部分
- 确保目标地址格式正确
- 必需参数,不能为空
required: true
position: 0 # 位置参数,放在命令最后
format: "positional"
- name: "ports"
type: "string"
description: |
要扫描的端口范围。可以是单个端口、端口范围、逗号分隔的端口列表,或特殊值。
**示例值:**
- 单个端口: "80"
- 端口范围: "1-1000"
- 多个端口: "80,443,8080,8443"
- 组合: "80,443,8000-9000"
- 常用端口: "1-1024"
- 所有端口: "1-65535"
- 快速扫描: "80,443,22,21,25,53,110,143,993,995"
**注意事项:**
- 如果不指定,将扫描默认的1000个常用端口
- 扫描所有端口(1-65535)会非常耗时
- 建议先扫描常用端口,再根据结果决定是否扫描全部端口
required: false
flag: "-p"
format: "flag"
+100
View File
@@ -0,0 +1,100 @@
name: "sqlmap"
command: "sqlmap"
enabled: true
# 简短描述(用于工具列表,减少token消耗)
short_description: "自动化SQL注入检测和利用工具,用于发现和利用SQL注入漏洞"
# 工具详细描述
description: |
自动化SQL注入检测和利用工具,用于发现和利用SQL注入漏洞。
**主要功能:**
- 自动检测SQL注入漏洞
- 支持多种数据库类型(MySQL, PostgreSQL, Oracle, MSSQL等)
- 自动提取数据库信息(表、列、数据)
- 支持多种注入技术(布尔盲注、时间盲注、联合查询等)
- 支持文件上传/下载、命令执行等高级功能
**使用场景:**
- Web应用安全测试
- SQL注入漏洞检测
- 数据库信息收集
- 渗透测试和漏洞验证
**注意事项:**
- 仅用于授权的安全测试
- 某些操作可能对目标系统造成影响
- 建议在测试环境中先验证
- 使用 --batch 参数避免交互式提示
# 参数定义
parameters:
- name: "url"
type: "string"
description: |
目标URL,包含可能存在SQL注入的参数。
**格式要求:**
- 完整的URL,包含协议(http:// 或 https://
- 必须包含查询参数,参数值用 * 标记注入点
- 或者直接提供完整的URL,sqlmap会自动检测参数
**示例值:**
- 标记注入点: "http://example.com/page?id=1*"
- 完整URL: "http://example.com/page?id=1"
- POST数据: "http://example.com/login" (需要配合data参数)
- Cookie注入: "http://example.com/page" (需要配合cookie参数)
**注意事项:**
- URL必须可访问
- 确保URL格式正确,包含协议前缀
- 如果使用POST请求,需要配合data参数
- 必需参数,不能为空
required: true
flag: "-u"
format: "flag"
- name: "batch"
type: "bool"
description: |
非交互模式,自动选择默认选项,不需要用户输入。
**使用场景:**
- 自动化测试脚本
- 批量扫描
- 避免交互式提示
**注意事项:**
- 建议始终设置为true,避免工具等待用户输入
- 默认值为true
required: false
default: true
flag: "--batch"
format: "flag"
- name: "level"
type: "int"
description: |
测试级别,范围1-5,级别越高测试越全面但耗时越长。
**级别说明:**
- Level 1: 基本测试,快速但可能遗漏漏洞
- Level 2: 默认级别,平衡速度和覆盖率
- Level 3: 扩展测试,更全面的检测
- Level 4: 深度测试,包含更多payload
- Level 5: 最全面测试,包含所有已知技术
**建议:**
- 快速扫描使用1-2
- 常规测试使用3(默认)
- 深度测试使用4-5
**注意事项:**
- 级别越高,请求数量越多,可能被WAF拦截
- 默认值为3
required: false
default: 3
flag: "--level"
format: "combined" # --level=3