您当前的位置:首页 > 电脑百科 > 安全防护 > 软件工具

如何半天玩转一个“ES未授权利用”插件

时间:2020-07-31 10:48:19  来源:  作者:

前言:

Elasticsearch服务普遍存在一个未授权访问的问题,个人最近刚好在帮某企业梳理这方面的资产,但每次都是通过Goby扫描出来后再手动访问,比较麻烦。

刚好看到Goby的内测版推出了开放式的插件功能,所以抱着试手的想法开发了此款插件。

在Goby团队小姐姐的强烈推荐下,分享我此次的开发经验。希望通过本文内容,能帮助大家在插件市场愉快的玩耍。

插件效果

当扫描出Elasticsearch未授权漏洞后,会在漏洞相关⻚以及资产详情处显示“Indices按钮”,点击即可展开该es服务器的Indices信息:

如何半天玩转一个“ES未授权利用”插件

 

在搜索框输入关键字可以根据index名称进行模糊搜索:

如何半天玩转一个“ES未授权利用”插件

 

构建流程

官方的开发文档还是很好理解的,有提供开发脚手架。

下载→解压到goby/extensions目录,再运行Goby扫描,一个demo就出来了。

接下来就是改!

核心集中在确认入口点和API调用。

开发文档地址: https://github.com/gobysec/GobyExtension

1. 确定入口点

在选定ES做插件后,我把入口点选择在了漏洞相关页面,首先在./package.json中做以下配置:

  ...
  "main": "./extension.js",
  "contributes": {
    "views": {
      "vulList": [
        {  
          "command": "elastic",
          "title": "Indices",
          "visible": "elastic_visi"
        }
      ]
    }
  }
  ...

其中需要关注以下几点:

main: 插件的主入口文件路径

contributes.views. vulList[0].command: 注册命令的名称

contributes.views. vulList[0].title: 在按钮中显示的文字

contributes.views. vulList[0].visible: 这里也要填入注册命令的名称,主要作用是判断按钮是否在该漏洞显示,回调函数应该返回一个布尔型的值。

2. API调用

./extension.js中做以下配置:

function activate(content) {
    goby.registerCommand('elastic', (content) => {    //这里的'elastic'和上文中contributes.views. vulList[0].command的值保持一致
        let path = __dirname + "/index.html?hostinfo=" + content.hostinfo;    //设置打开新窗口的html文件路径,并传入当前hostinfo信息
        goby.showIframeDia(path, "Elasticsearch未授权漏洞利用", "600", "600");    //打开一个600*600的iframe窗口,窗口标题为'Elasticsearch未授权漏洞利用'
    });

    goby.registerCommand('elastic_visi',  (content) => {    //这里的'elastic_visi'和上文中contributes.views. vulList[0].visible的值保持一致
        return content.name === "Elasticsearch unauthorized"    //对漏洞名称进行判断
    });
}
​
exports.activate = activate;

小提示:漏洞名称可以直接在漏洞窗口进行查找,点击进去之后复制名称即可。

如何半天玩转一个“ES未授权利用”插件

 

3. index.html页面开发

官方插件中使用的是layui框架进行开发,我这里使用的是Vue+Element-ui。

在使用框架方面Goby比较开放,没有限制,大家可以任意发挥。

这里简单介绍一下我的开发流程。

首先需要处理传过来的hostinfo信息,可以直接copy官方文档提供的代码:

getIframeQueryString(name) {
  let reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
  let r =window.parent.document.getElementById("goby-iframe").contentWindow.location.search.substr(1).match(reg);
  if (r != null) {
    return decodeURI(r[2]);
  }
  return null;
}

拿到漏洞的IP后,就可以对目标IP进行自定义请求了:

request({    //在utils中有对axIOS进行简单封装
  method: 'get',
  url: 'http://' + this.getIframeQueryString("hostinfo") + "/_cat/indices",
  params: {
    format: "json"
  }
})

最后对拿到的数据进行处理,显示为表格样式,整个插件就开发完成了~

重构后的目录如下所示:

goby-extension-elasticsearch
├── babel.config.js
├── package-lock.json
├── package.json
├── public
│   ├── CHANGELOG.md
│   ├── README.md
│   ├── extension.js
│   ├── favicon.ico
│   ├── index.html
│   └── package.json
├── src
│   ├── App.vue
│   ├── element-variables.scss
│   ├── main.js
│   ├── plugins
│   │   └── element.js
│   └── utils
│       └── request.js
└── vue.config.js

编译:

npm run build

输出的目录结构如下:

goby-extension-elasticsearch/dist
├── CHANGELOG.md
├── README.md
├── css
│   ├── app.b2893489.css
│   └── chunk-vendors.2ac5db4b.css
├── extension.js
├── favicon.ico
├── fonts
│   ├── element-icons.535877f5.woff
│   └── element-icons.732389de.ttf
├── index.html
├── js
│   ├── app.2279fc27.js
│   └── chunk-vendors.8cb53444.js
└── package.json
​

4.测试

在Goby的extensions目录下新建任意名称的文件夹,把goby-extension-elasticsearch/dist目录下的文件移动进去即可。使用开发版本的Goby可以打开DevTools进行调试。

5.打包

打包前把自己及插件的相关信息分别填到package.json、Readme.md、Changlog.md文件中。

Readme.md信息会显示在详情中

如何半天玩转一个“ES未授权利用”插件

 

Changlog.md信息会显示在更新日志中

如何半天玩转一个“ES未授权利用”插件

 

小提示:打包时必须把插件文件夹整个打包,多打一层或者不打包都会发布失败。压缩包和文件夹名称保持一致,如下图所示。

如何半天玩转一个“ES未授权利用”插件

 

6.发布

  1. 注册账号: https://gobies.org/user/register
  2. 在Goby客户端进行登陆
  3. 上传插件
  4. 审核通过后会收到邮件/微信通知,然后可以在Goby的扩展程序中看到

小结

Goby插件的开发文档写的非常清晰,我从阅读文档到插件开发完成,刚好用了一上午的时间。

不过也因为插件功能刚刚开放,所以有一些不足。

个人认为插件所产生的流量不应该直接从Client端直接发送到目标服务器,应该在server端(goby-cmd)进行中转。

如果后续提供类似的API的话就更完美了。

由于当时没看到开发版本,开发过程中也没有进行调试,所以本篇文章也就没有详细介绍Debug过程。唯一出问题的地方就是在打压缩包得时候没有新建目录,直接散装在压缩包里了导致上传失败,不过goby团队小姐姐很快就帮我解决了这个问题。

对于本插件的迭代计划,下一版打算在列出Indices信息后,点击表格添加预览详细docs功能

如果表哥们对本插件有其他想法&需求,可以直接在我的项目中提issues。

https://github.com/fazzzzzzz/goby-extension-elasticsearch

注:由于是Client端插件,所以即使设置外部Server或者代理,流量仍会从Client端发 出,可能存在流量不可达导致列不出indices的情况。

转载自:https://www.freebuf.com/articles/web/243003.html



Tags:ES未授权利用   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
前言:Elasticsearch服务普遍存在一个未授权访问的问题,个人最近刚好在帮某企业梳理这方面的资产,但每次都是通过Goby扫描出来后再手动访问,比较麻烦。刚好看到Goby的内测版推出...【详细内容】
2020-07-31  Tags: ES未授权利用  点击:(141)  评论:(0)  加入收藏
▌简易百科推荐
已经观察到一种新的基于JavaScript的远程访问木马(RAT)利用社会工程学传播,采用隐蔽的"无文件"技术作为其逃避检测和分析的方法。该恶意软件由Prevalyion的对抗性反情报团队(PA...【详细内容】
2021-12-17  网安老葫    Tags:恶意软件   点击:(13)  评论:(0)  加入收藏
关于windows Defender防病毒的问题升级win10后,我们会经常遇到打开或下载文件时弹出提示框提示你下载的文件是病毒之类,直接给你删除。你好不容易找了个激活工具,你刚打开发现...【详细内容】
2021-11-08  IT小哥吧    Tags:defender   点击:(46)  评论:(0)  加入收藏
喽!大家好,我是小易,欢迎来到我的知识分享站!今天给大家分享5个杀毒神器,让你的电脑干干净净,建议收藏起来哟! 1、Windows Defender随着Win10系统的更新已经日趋完善,它可以很好的解...【详细内容】
2021-11-08  知识与技能    Tags:流氓软件   点击:(74)  评论:(0)  加入收藏
介绍其实Iptables服务不是真正的防火墙,只是用来定义防火墙规则功能的"防火墙管理工具",将定义好的规则交由内核中的netfilter即网络过滤器来读取,从而真正实现防火墙功能。fil...【详细内容】
2021-10-18  互联网IT技术全栈    Tags:   点击:(52)  评论:(0)  加入收藏
什么是Nessus?Nessus 是目前全世界最多人使用的系统漏洞扫描与分析软件。总共有超过75,000个机构使用Nessus 作为扫描该机构电脑系统的软件步骤如下:查看当前kali系统内核版本...【详细内容】
2021-09-09  TestGO    Tags:Nessus   点击:(112)  评论:(0)  加入收藏
http 头部信息http头部信息经常包含着主机服务的一些版本信息,经常使用的字段信息有:Server, X-Powered-By, X-AspNet-Version工具可采用curl进行curl --location --head $URL...【详细内容】
2021-08-19  80后IT老民工    Tags:渗透   点击:(225)  评论:(0)  加入收藏
一、杀软常见的三种方式二、免杀的三种常用方式三、利用工具实现免杀1、veil工具基础实现免杀+进阶2、venom免杀3、利用kali自带的shellter进行免杀4、利用avet实现免杀四、...【详细内容】
2021-08-18  白帽hacker淬炼    Tags:免杀   点击:(81)  评论:(0)  加入收藏
关于工具现有工具现在,现成的污点分析工具已经有很多了。其中,我最感兴趣的是Triton和bincat,因为两者已经相当成熟。然而,我们却无法使用这两种工具,因为它们不支持目标设备所...【详细内容】
2021-08-12  Hbo涵    Tags:安全漏洞   点击:(93)  评论:(0)  加入收藏
从实现原理上分,防火墙的技术包括四大类:网络级防火墙、应用级网关、电路级网关和规则检查防火墙。1、网络级防火墙一般是基于源地址和目的地址、应用、协议以及每个IP包的端...【详细内容】
2021-07-20  趣谈文化  搜狐号  Tags:防火墙   点击:(225)  评论:(0)  加入收藏
一、VMware部分1、Vmware简介虚拟机就是一个用来模拟真实的物理机环境的一个软件,可以在虚拟机中安装不同版本的操作系统。就是一个把下载好的ISO安装在物理机操作系统的一个...【详细内容】
2021-07-12  Kali与编程  公众号  Tags:Kali Linux   点击:(112)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条