本帖最后由 gclome 于 2021-1-12 21:09 编辑
原文链接:插件分享 | 可对内置暴力破解进行字典替换的Dictionary Config
前言:Goby内置有暴力破解漏洞字典,但是由于内置的字典较为简单,直接使用会导致这些漏洞几乎发挥不了作用。所以这次在插件里内置了不同等级的漏洞字典,我们可以选择字典保存,批量替换及自定义替换字典,从而使这些漏洞在扫描时发挥作用。
01 插件效果
1.1 插件使用
1.1.1 批量替换字典
1.1.2 自定义字典
1.2 插件入口
安装完插件后,可以在工具栏内看到插件的按钮。
1.3 字典配置
插件目前预置了3个等级的字典:精简、中等以及复杂。
自定义可以自由组合这些字典的等级进行配置。
至少需要选择一个协议的字典进行配置,如果没有选择直接保存的话会有提示。
配置成功后会有提示。
02 插件开发
2.1 确定思路
用node来操作文件,用我们插件预置的字典来替换Goby内置的字典,找到Goby字典的路径:goby\golib,在Goby根目录下的golib目录就是字典的路径。
2.2 确定入口点
将插件入口点选择放在工具栏
- "contributes": {
- "views": {
- "toolbar": [
- {
- "command": "dictionaries",
- "title": "dictionaries",
- "icon":"./src/assets/img/dictionaries.png"
- }
- ]
- }
- }
复制代码
2.3 业务开发 业务逻辑很简单,就是按照用户选择的等级将不同字典文件的内容写入到Goby内置字典。 首先替换文件很简单,直接在我们的插件弹窗页面操作。 将node中的模块引进来
- data: {
- goby:parent.goby,
- path:parent.require('path'),
- fs:parent.require('fs')
- }
复制代码
写一个文件替换的方法,需要两个参数: 1. 插件预置字典的路径; 2. 需要替换的字典 - replace(url,name){
- this.fs.readFile(url,'utf-8',(err,data)=>{
- if(err){
- this.fail.push(name);
- return;
- }
- this.fs.writeFile(this.dictionariesPath[name],data,(error)=>{
- if(error){
- this.fail.push(name);
- return;
- }
- })
- })
- }
复制代码 最后给Save按钮绑定点击事件,并且根据用户选择的是全替换还是自定义来进行不同的操作。
- <el-button type="primary" class="save" @click="save" size="small">Save</el-button>
复制代码- save(){
- this.fail = [];
- switch (this.value.label) {
- case 3:
- this.userDefined();
- break;
- default:
- this.preset();
- break;
- }
- }
复制代码 03 小结本次插件开发很顺利,用到的API也是非常基础的API:registerCommand、showIframeDia 及 showInformationMessage。Dictionary Config目前只有精简、中等以及复杂三个等级的字典,后续会对字典进行完善并且支持大家自行上传字典。
内测版 Beta 1.8.230、正式版 Beta 1.8.230 、超级内测版 Beta 1.8.236 及以上版本支持。
插件开发文档及Goby开发版下载:
https://gobies.org/docs.html
关于插件开发在B站都有详细的教学,欢迎大家到弹幕区合影~ - https://www.bilibili.com/video/BV1u54y147PF/
|