网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
0x001 插件效果
1.1 插件使用
下载插件并配置 dirsearch.py、python3 路径或命令。接下来就可以在ip详情页跟 webfinder 页面使用 dirsearch。扫描完成后会生成一个 csv 文件,可在侧边栏查看扫描结果并双击打开 csv 文件。
0x002 插件开发
2.1 插件目录结构
参考 https://github.com/gobysec/GobyExtension 的开发文档,目录结构如下:
├── .gitignore // 忽略构建输出和node\_modules文件
├── README.md // 插件介绍文档
├── CHANGELOG.md // 插件更新日志文档
├── src
│ └── extension.js // 插件源代码
├── package.json // 插件配置清单
主要代码在 package.json 和 extension.js,前者为插件的配置清单,后者为插件的主要代码。
2.2 注册插件配置清单
这里需要编写 package.json,参考了@zhzyker 表哥的 vulmap 插件,内容如下:
"contributes": {
"configuration": {
"dirsearch.py 位置": {
"type": "string",
"default": "",
"description": "请输入dirsearch.py的位置(示例:/home/ccc/dirsearch.py)",
"fromDialog": true
},
"python3 命令或位置": {
"type": "string",
"default": "python3",
"description": "请输入在当前环境下的Python3的命令或位置,也可以是绝对路径(示例:python3 or /usr/bin/python3)"
}
},
"views": {
"ipDetail": {
"bannerTop": [
{
"command": "dirsearch\_scan",
"title": "dirsearch",
"icon": "./src/assets/logo.png",
"visible": "DirsearchCheck"
}
]
},
"webfinder": [
{
"command": "dirsearch\_scan",
"icon": "./src/assets/logo.png",
"title": "dirsearch"
}
],
"toolbar": [
{
"command": "dirsearch",
"title": "dirsearch",
"icon": "./src/assets/logo.png",
"tips": "Dirsearch\_Result"
}
]
}
}
这里主要注册了 dirsearch.py 位置、python3 命令或者位置、ipDetail 按钮、webfinder 按钮、toolbar 页5个配置清单。
1.因为 Dirsearch 是通过 python3 调用 dirsearch.py 来使用的,所以需要设置 dirsearch.py 位置来调用扫描;
2.至于 python3 命令或者位置是因为由于操作系统的差异,需要用户来指定 python3 的位置或者命令。例如我的操作系统是 mac,可以使用默认值 python3 调用,windows 下则需要确认 cmd 窗口输入 python、python3 能够调用 python3 命令或设置成 python3 绝对路径;
3.ipDetail 按钮、webfinder 按钮不用多说,是用来调用 IP 详情页、webfinder 目录扫描任务的按钮;每次目录扫描都会生成一个 csv 文件用来存储扫描结果;
4.toolbar 页可以直接从侧边栏查看扫描结果并双击打开 csv 文件。
对应的效果如下:
dirsearch.py 位置、python3 命令或者位置效果
toolbar 页效果
2.3 设定 http、https为入口
众所周知,目录扫描是是需要 http、https 协议,首先是一个访问的 url 才可以进行扫描,但是 ip 详情页会显示一些其他的服务,例如 smb、rdp、ssh 等服务是没办法进行目录扫描的,所以这里我们要处理一下,让只有是 http、https 协议的端口才显示 Dirsearch 按钮。此时我们要编写 extension.js 文件,代码如下:
let identical = {
"web": true,
"http": true,
"https": true
};
然后注册命令用于检测是否显示 Dirsearch 按钮。
goby.registerCommand('DirsearchCheck', function (content) {
if (identical[content.protocol]) return true;
return false;
});
这样 Goby 界面就会在 http、https 协议显示 Dirsearch 按钮。
效果如下:
2.4 扫描任务调用及显示结果
这里扫描任务主要是通过调用 cmd 窗口进行的,每次扫描任务都会创建一个 csv 文件并且过滤 404 状态码,代码如下:
function runScanner(targetUrl,taskResult){
var cp = require('child\_process');
var command = config["python3 命令或位置"]["default"] + " " + config["dirsearch.py 位置"]["default"] + " -u " + targetUrl +" "+"-x 404 "+"--csv-report="+taskResult;
//console.log(command);
if (os.type() == 'Windows\_NT') {
//windows
console.log();
cp.exec(`start cmd /k ${command}`);
}else if (os.type() == 'Darwin') {
console.log(command);
let dircmd = `
osascript -e '
tell application "Terminal"
activate
do script "${command}"
end tell
'`
cp.exec(dircmd, (error, stdout, stderr) => {
if (stdout != "") {
console.log(stdout);
}
})
}else if (os.type() == 'Linux') {
//Linux
// cp.exec(`bash -c "${url}"`)
const { exec } = this.cp;
exec(`bash -c ${command}`, (error, stdout, stderr) => {
console.log(`stdout: ${stdout}`);
console.log(`stderr: ${stderr}`);
if (error) {
console.error(`执行的错误: ${error}`);
goby.showErrorMessage(`执行的错误: ${error}`);
return;
}
}
)
}
}
按照 Goby 扫描任务 id 保存 csv 文件。
var taskResult =__dirname +"/result/"+goby.getTaskId();
if (!fs.existsSync(taskResult)) {
fs.mkdirSync(taskResult);
var taskResult =taskResult+"/"+IP+"\_"+Port+".csv";
runScanner(targetUrl,taskResult);
}else{
var taskResult =taskResult+"/"+IP+"\_"+Port+".csv";
runScanner(targetUrl,taskResult);
}
![img](https://img-blog.csdnimg.cn/img_convert/841d7df2533c09de5d9a99429f26497c.png)
![img](https://img-blog.csdnimg.cn/img_convert/232a78081090d2d1ba4f76dd88037763.png)
![img](https://img-blog.csdnimg.cn/img_convert/65daf0b821818f032f7218ba5ebb6b07.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618658159)**
..(img-dyT4cPqP-1715550755460)]
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618658159)**