插件分享 可进行Web漏洞扫描和验证的vulmap_goby 配置 vulmap(1)

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

搬自https://cn.gobies.org/docs.html的插件目录结构。

├── .gitignore          // 忽略构建输出和node\_modules文件
├── README.md           // 插件介绍文档
├── CHANGELOG.md        // 插件更新日志文档
├── src
│   └── extension.js    // 插件源代码
├── package.json        // 插件配置清单

主要代码分别package.jsonextension.js,前者为插件的配置清单,后者为插件主要代码。

2.3 设定插件配置选项

这里就需要编写package.json,Vulmap的内容如下

"configuration": {
  "vulmap.py 位置": {
    "type": "string",
    "default": "",
    "description": "请输入vulmap.py的位置(示例:/home/zhzy/vulmap.py)",
    "fromDialog": true
  },
  "python3 命令或位置": {
    "type": "string",
    "default": "python3",
    "description": "请输入在当前环境下的Python3的命令或位置,也可以是绝对路径(示例:python3 or /usr/bin/python3)"
  }
},

这里主要设定了两个键值,一个是vulmap.py位置用于设定Vulmap扫描器的位置路径,之后需要调用Vulmap进行扫描时使用,没有默认值,因为大家的目录习惯都不同所以需要手动指定。

再就是python3命令或位置需要用户指定python3命令的全称或绝对路径同样用于之后扫描时调用Vulmap,至于填写python、python3、python3.8等等就要看具体自己系统里的名称了,还是一样因为每个人的配置习惯和环境变量不同。

这里有个坑点,我在使用的电脑为Debian testing(Linux系统),使用的Goby也是Linux版本的,且平时使用zhzy(uid:1001)的用户,但是由于Goby需要root权限启动我每次都是sudo ./Goby来启动,这就导致Goby识别的环境变量和我当前的环境变量不同,例如我在zhzy用户设置alias python = ‘/xxx/python3.9’但是以sudo运行的Goby会识别python为Linux默认的python2,就导致版本不对应,所以还是建议写入python的绝对路径。

对应效果:
在这里插入图片描述

2.4 设定入口点

为显示有Vulmap按钮的地方,此时需要编写extension.js文件,内容如下

let identical = {
    "web": true,
    "http": true,
    "https": true
};

然后自定义一个注册命令用于检测是否显示Vulmap按钮

Goby.registerCommand('vulmapCheck', function (content) {
    if (identical[content.protocol]) return true;
    return false;
});

分别会在Goby界面中能够识别到http、https、Web协议的地方显示按钮,这里的按钮位置参考了Packer Fuzzer插件及Xray插件,因为都是进行Web扫描,故入口点也一样。

对应的效果:

在这里插入图片描述
在这里插入图片描述

2.5 扫描的调用及结果

调用Vulmap进行扫描主要为以下内容:

function runScanner(targetUrl,taskResult){
    var cp = require('child\_process');
    var command  = config["python3 命令或位置"]["default"] + " " + config["vulmap.py 位置"]["default"] + " -u " + targetUrl + " > " + taskResult;
    // Goby.showInformationMessage(command);
    cp.exec(command, (error, stdout, stderr) => {
        console.log(`stdout: ${stdout}`);
        console.log(`stderr: ${stderr}`);
        if (error) {
            console.error(`扫描命令错误: ${error}`);
            Goby.showErrorMessage(`扫描命令错误: ${error}`);
            return;
        } else {
            console.log(command)
            Goby.showInformationMessage(`任务创建成功: ${taskID},请稍等片刻再次点击查看结果`);
        }
    })
}

调用扫描主要还是靠var command拼接的系统命令,因为Goby目前无法滚动实时显示执行结果,故目前将扫描结果重定向到文本文件中,在Vulmap扫描中,会在插件目录result中创建对应任务ID的结果文件,再次点击按钮后会判断文件存在并展开文件内容,判断代码如下:

if (fs.existsSync(taskResult)) {
    const lines = fs.readFileSync(taskResult).toString()
    if (lines.includes("Scan completed and ended")) {
        if (lines.includes("[+]")) {
            Goby.showSuccessMessage(`vulmap 扫描完成并发现漏洞 !`);
        } else if (lines.includes("[?]")){
            Goby.showSuccessMessage(`vulmap 扫描完成并发现疑似漏洞 ?`);
        } else if (lines.includes("install -r requirements.txt")){
            Goby.showWarningMessage(`vulmap 的依赖还有问题,要先解决 ~`);
        } else {
            Goby.showSuccessMessage(`vulmap 扫描完成,但是没有发现漏洞 ~`);
        }
        Goby.showIframeDia(taskResult, "vulmap scan result", "900", "520");
    } else if (lines.includes("Survival check failed")){
        if (lines.includes("[+]")) {
            Goby.showSuccessMessage(`vulmap 扫描完成并发现漏洞 !`);
        } else if (lines.includes("[?]")){
            Goby.showSuccessMessage(`vulmap 扫描完成并发现疑似漏洞 ?`);
        } else if (lines.includes("install -r requirements.txt")){
            Goby.showWarningMessage(`vulmap 的依赖还有问题,要先解决 ~`);
        } else {
            Goby.showSuccessMessage(`vulmap 扫描完成,但是没有发现漏洞 ~`);
        }
        Goby.showIframeDia(taskResult, "vulmap scan result", "900", "520");
    } else {
        Goby.showWarningMessage(`正在扫描: ${targetUrl} 还没扫完, 请稍等再打开~`);
        Goby.showIframeDia(taskResult, "vulmap scan result", "900", "520");
    }
} else {
    Goby.showInformationMessage(`运行 vulmap 扫描目标: ${targetUrl}`);
    // 此时开启vulmap扫描
    runScanner(targetUrl,taskResult);
}

按钮不同阶段的判断效果。

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

术提升。**

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 7
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值