一键采集上传常见的细节问题( 2.2插件入口点Web检测:使用了与《Xray插件》作者go0p)
优采云 发布时间: 2021-12-09 15:10一键采集上传常见的细节问题(
2.2插件入口点Web检测:使用了与《Xray插件》作者go0p)
此时,我们可以在终端中使用which命令查看python3.7.7版本的安装位置,填写该参数中获取的值(绝对路径调用)即可启用要正常调用的插件。
2.2 插件入口点
网页检测:与“Xray插件”go0p作者相同的判断方法!使用,并且只有在满足条件时才会显示“Packer Fuzzer”按钮。
首先,资产类型必须是“https”、“http”和“web”之一:
let identical = {"web": true,"http": true,"https": true};
然后会在Packer_Check中进行判断,如果不匹配则返回false结果从而不显示对应的按钮:
goby.registerCommand('Packer_Check', function (content) {
if (identical[content.protocol]) return true;
return false;
});
2.3 设置扫描锁定
点击“Packer Fuzzer”后,程序会判断扫描锁定文件是否存在,如果存在则给出提示,无需进一步操作:
if (fs.existsSync(lockPath)) {
goby.showInformationMessage("Packer Fuzzer正在扫描中,可以稍后再来看看!");
} else {
......
}
扫描锁定文件位于PackerFuzzer项目的tmp目录下,命名格式为:当前项目ID+当前目标IP+当前目标端口+当前资产类型+锁定扩展名:
let lockPath = config["Packer Fuzzer路径"]["default"] + dirB + taskID + '_' + hostIP + '_' + hostPort + '_' + webProtocol + ".lock";
首次开启扫描时,插件会使用以下命令生成扫描锁定文件,然后调用扫描函数:
fs.writeFileSync(lockPath,'lock it','utf8');
runScanner(hostIP,hostPort,webProtocol,webURL,taskID);
当然,考虑到系统差异,我们对路径中的斜杠做了如下处理:
if (os.type() == 'Windows_NT') {
dirA = '\\reports\\';
dirB = '\\tmp\\';
} else {
dirA = '/reports/';
dirB = '/tmp/';
}
2.4 检测目标特征
点击“Packer Fuzzer”按钮后,程序会判断扫描锁定文件是否存在,如果存在则给出提示,无需进一步操作:
let fingerprint = ['\\u003cnoscript','webpackJsonp','\\u003cscript id=\\"__NEXT_DATA__','webpack-','\\u003cstyle id=\\"gatsby-inlined-css','\\u003cdiv id=\\"___gatsby','\\u003cmeta name=\\"generator\\" content=\\"phoenix','\\u003cmeta name=\\"generator\\" content=\\"Gatsby','\\u003cmeta name=\\"generator\\" content=\\"Docusaurus'];
写指纹不难,但识别出的数据从何而来?我们知道Goby在扫描完成后会保留每个目标的banner信息,但是这个API在官方插件文档中并没有公开,需要我们自己去了解。首先,我们需要在Goby开发版的控制台中对关键操作设置断点,然后我们可以找到我们需要的API细节以及如何调用它们:
可以看到getIpInfo需要传入三个参数,第一个是回调函数,第二个是当前任务ID,第三个是当前目标站点IP。之后,该函数将格式化横幅信息json并将其传递给回调函数。调用进去。了解了这些之后,我们就可以开始调用这个函数了:
getIpInfo(dealWebInfo,goby.getTaskId(),hostIP);
dealWebInfo函数的检测函数如下:
<p>function dealWebInfo(result){
taskID = result.data["taskId"];
if (result.data["honeypot"] == 0){
if (identical[result.data["protocols"][content.hostinfo]["protocol"]]){
var flag = 0;
for(var i = 0; i