插件管理
在我们的扫描器中,插件是用于检测不同漏洞的模块。我们的扫描器提供了一些内置的插件,但您也可以编写自己的插件,以便扫描特定的漏洞或特定的Web应用程序。
插件分组:同一类型或者同一架构相关的插件划分为同一个插件分组。在创建扫描时,可以根据分组批量选择插件。
我们的插件分为 内置插件 和 nuclei插件(nuclei社区提供的yaml模版)。
- 内置插件:分组是系统内置。
- nuclei插件:从开源插件列表同步或者自己编写,分组是除系统内置外的其他分组。
- 用户新增插件时,使用yaml规则编写插件。
1、插件列表⚓︎
插件列表能够在创建扫描任务时提供可选择的插件
- 启用:会创建扫描项目时会显示该插件且节点会自动同步插件。
-
批量启用或者禁用:先选择条件,然后会按照条件进行启用和禁用。
-
新增插件:
表单字段说明如下:
名称 | 描述 | 示例 |
---|---|---|
插件名称 | 插件名称 | xss |
类型 | 对应漏洞类型;添加类型 | web漏洞/XSS |
危害级别 | 对应漏洞级别 | 低危 |
插件分组 | 插件对应分组,方便查询和扫描时批量选择 | 系统内置 |
描述信息 | 插件的描述 | 跨站脚本攻击 |
tag | 任意自定义标签 | xss |
插件规则 | 参考插件规则(需要去除官方模版中info及id,只包含请求部分,如下) | 如下示例 |
插件规则例子
requests:
- method: GET
path:
- "{{ BaseURL }}/.git/config"
matchers:
- type: word
words:
- "[core]"
2、开源插件⚓︎
开源插件列表主要是作为插件列表的一个来源,开源插件需要先添加进插件列表,才能进行使用
开源插件是从nuclei模版仓库同步获取插件。你可以点击 更新开源插件 按钮 ,来从模版仓库获取最新插件。
开源插件列表字段及操作说明:
操作类型
操作类型是对于旧开源插件列表来说的
- 新增:开源插件列表之前没有,同步后新增的
- 更新:开源插件内容和之前不同
状态说明
- 待审核:表示本次更新还没有进行处理(没有同步或者忽略操作)。
- 已审核:代表本次插件变更已经添加到插件列表
- 忽略:忽略插件本次内容变更,不添加进插件列表
操作
- 点击审核->同步到插件库可以将当前插件添加(更新)到插件列表。(无则添加,有则更新)
- 点击忽略则不做操作,即不添加进插件列表
3、插件测试⚓︎
进入 插件列表->编辑->下一步进行插件测试
请求参数
- method:请求方法
- target:请求url
- data:post请求体
- env:扫描环境 :1(内网节点);2(外网节点)
测试结果
- err:任务错误日志
- status: 任务状态;running(运行中)、complete(完成)、canceled(取消)
- vul:漏洞详情,漏洞字段说明如下:
字段名称 | 描述 |
---|---|
name | 此处展示对应插件名称 |
url | 漏洞url |
host | 漏洞url的host |
port | 漏洞url的端口 |
path | 漏洞url的路径 |
level | 漏洞级别对应插件级别 |
meta | 漏洞中涉及的元数据:爆破成功的用户名及密码、payload等 |
time | 发现时间 |
request | 漏洞的请求数据包 |
response | 漏洞的响应数据包 |
culCommand | 漏洞请求的curl命令 |
interaction.rawRequest | 发送的dns请求 |
interaction.rawResponse | 对应的dns响应 |
templateId | 对应的插件ID |
taskId | 对应的任务ID |
status | 漏洞状态 (插件测试无需关注) |
请求记录
开源插件在测试时会记录请求和响应详情,系统内置插件不支持请求记录。
4、历史测试⚓︎
查看测试历史,记录插件的所有测试结果。
- 你可以通过列表操作栏的 更多->取消 按钮:来取消当前测试任务
5、字典管理⚓︎
管理插件中使用的爆破字典,此功能需要配置文件服务器。
- 字典文件格式:每个数据(比如:用户名、密码数据)都需要用换行分开,如下示例:
admin root
-
上传文件后会自动同步到节点。
-
内置插件字典上传时需要按照对应文件名上传,否则不生效。对应名称如下:
插件名称 | 用户名文件名称 | 密码文件名称 |
---|---|---|
401 weak password(http-basic弱口令) | 401_username | 401_password |
mysql weak password(mysql弱口令) | mysql_username | mysql_password |
rdp weak password(rdp弱口令) | rdp_username | rdp_password |
smb weak password(smb弱口令) | smb_username | smb_password |
ssh weak password (ssh弱口令) | ssh_username | ssh_password |
telnet weak password(telnet弱口令) | telnet_username | telnet_password |
例如:为 《mysql weak password》 插件添加用户名文件
- 用户自定义字典使用
- 文件名不可重复,否则将会覆盖旧文件
- 上传完成后,在列表找到对应文件的文件路径。编写插件时直接使用文件路径。如下:
requests:
- raw:
- |
POST /?file={{ path }} HTTP/1.1
User-Agent: {{ header }}
Host: {{ Hostname }}
payloads:
path: helpers/wordlists/prams.txt
header: helpers/wordlists/header.txt