插件分享 | 可进行排序扫描任务的Task Queue

admin 2020年12月21日23:27:54评论47 views字数 3027阅读10分5秒阅读模式

插件分享 | 可进行排序扫描任务的Task Queue

 

前言:在以往hvv场景中使用Goby的过程总是存在一个痛点:时间短,目标多,只能盯着扫描进度结束后才能手动返回到初始界面开启下一个扫描任务(内心极度狂躁)。本次Goby更新后又开放了新的插件入口点以及API,使添加扫描任务步骤简洁化,随时可以将收集到的信息添加多个任务进行排序扫描,实现一种动态持续的队列效果。


插件分享 | 可进行排序扫描任务的Task Queue 01

 插件效果
1.1 插件使用

插件分享 | 可进行排序扫描任务的Task Queue


1.2 插件入口

Goby内测版1.8.230更新后,产品界面有了新变化,在产品右侧开放了新的插件入口点:工具栏。安装完Task Queue插件之后,可以在工具栏看到插件的按钮。

插件分享 | 可进行排序扫描任务的Task Queue


1.3 操作队列

点击按钮后会打开我们的自定义弹窗,分为两个页面:一个是添加扫描任务队列的页面;一个是查看队列的页面。

插件分享 | 可进行排序扫描任务的Task Queue


Task可以查看队列中的任务详情,还可以对队列中的任务进行修改删除操作。


插件分享 | 可进行排序扫描任务的Task Queue


插件分享 | 可进行排序扫描任务的Task Queue 02

 插件开发
2.1 确定功能的入口点

入口点选择在新开放的工具栏

"contributes": {        "views": {                "toolbar":[                    {                        "command""addTask",                        "title""Task Queue ",                        "icon""src/assets/img/logo2.png",                        "tips":"Task Queue"                    }                ]        }}


2.2 任务队列数据的存储

为了避免Goby重新加载插件而导致插件数据丢失,所以会在当前插件目录下创建一个data.json的文件来保存数据

fs.writeFile(this.filePath,JSON.stringify({"data":[]}, null6),(err)=>{}


2.3 确定实现功能需要用到的API

2.3.1 获取扫描数据

添加队列需要用户自定义扫描信息,因此需要获取Goby内置的端口信息、POC信息以及扫描序列信息,要用到getPortList,getVulnerabilityList,getOrderList

goby.getPortList().then((res)=>{    config.port = res.data;    let con = ``;    for(let i in res.data){      con += `        <option value="${res.data[i].type}">${res.data[i].type}</option>      `;     }    $('.port').html(con);    form.render('select');    $('.portcontent').val(res.data[0].value);})goby.getVulnerabilityList().then((res)=>{    let con = ``;    for(let i in res.data){       con += `            <option value="${res.data[i]}">${res.data[i]}</option>                `;      }      $('.vulnerability').html(con);      form.render('select');})goby.getOrderList().then((res)=>{      let con = ``;      for(let i in res.data){         con += `           <option value="${res.data[i]}">${res.data[i]}</option>         `;      }      $('.order').html(con);      form.render('select');})


2.3.2 绑定事件通知bindEvent

在扫描结束后需要开启队列中下一个任务、扫描开始/暂停以及结束后刷新页面队列数据。

这里展示暂停后刷新页面。

//因为暂停后会涉及到操作队列文件,所以延迟1秒刷新页面goby.bindEvent('onPauseScan',(res)=>{        setTimeout(()=>{            init();        },1000)    })


2.3.3 开始扫描startScan

goby.startScan(queue.data[index]).then((res)=>{     queue.data[index].taskId = res.data.taskId;     queue.data[index].state = 1;     fs.writeFile(this.filePath,JSON.stringify(queue, null, 6),(err)=>{            if(err){                 reject(err);            }else{                 resolve(res);            }      })});


2.4  业务开发

因为要在自定义弹窗页面中操作队列,所以在extension.js中声明了全局队列对象实例

window.taskQueue = new taskQueue();

taskQueue 对象上存在添加队列,删除队列,开始扫描等方法,自定义弹窗中可以通过parent.taskQueue 来获取此实例,通过 parent.goby 获取Goby对象

let goby = parent.goby;let taskQueue = parent.taskQueue;

通过taskQueue实例来操作队列

例如:删除某个任务

$('.con').delegate('.delete','click',function(){        taskQueue.delete([$(this).parent().attr('queueId')]).then(()=>{             init();        });    })



插件分享 | 可进行排序扫描任务的Task Queue 03

 小结
这次写这个任务队列插件一路坎坷,首先就是队列任务数据的保存,本来准备保存在全局变量中,可是Goby重新加载插件时数据会丢失,所以将数据保存在了本地文件中。然后就是在自定义弹窗中操作队列文件,所以全局声明了一个新的taskQueue的实例,这样在自定义弹窗页面中就可以通过parent.taskQueue对象来操作队列文件。


最后我们还计划在本插件上线二期任务——定时扫描及拖拽排序,夜深人静的时候,你只管休息,Goby就替你工作啦~ 表哥们尽情期待~



插件开发文档及Goby开发版下载:

https://gobies.org/docs.html


本次插件案例解析及用到的API在B站都有详细的教学,欢迎大家到弹幕区合影~

  • https://www.bilibili.com/video/BV1ki4y1c7hm/




插件分享 | 可进行排序扫描任务的Task Queue



更多插件分享

• Faz | 如何半天玩转一个“ES未授权利用”

• Vanilla | 可以查看摄像头快照的“Hikvision”

• 李大壮 | 可以上传json文件的“Shodan”

• go0p | 可以进行web爬虫的Xray插件

• c1o2a3 | 可以变身的超级赛亚人主题

• Bacde | 可以查询子域名及同IP域名的RapidDNS

• Poc Sir | 可对网站进行一键扫描的Packer Fuzzer

如果表哥/表姐也想把自己上交给社区插件分享 | 可进行排序扫描任务的Task Queue,戳这里领取一份插件任务?

https://github.com/gobysec/GobyExtension/projects



插件分享 | 可进行排序扫描任务的Task Queue

本文始发于微信公众号(GobySec):插件分享 | 可进行排序扫描任务的Task Queue

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2020年12月21日23:27:54
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   插件分享 | 可进行排序扫描任务的Task Queuehttp://cn-sec.com/archives/213091.html

发表评论

匿名网友 填写信息