Elasticsearch核心插件Kibana本地文件包含漏洞分析(CVE-2018-17246)

栏目: 编程工具 · 发布时间: 6年前

内容简介:不久前Elasticsearch发布了最新安全公告, Elasticsearch Kibana6.4.3之前版本和5.6.13之前版本中的Console插件存在严重的本地文件包含漏洞可导致拒绝服务攻击、任意文件读取攻击、配合第三方应用反弹SHELL攻击,下文笔者对其漏洞背景、攻击原理和行为进行分析和复现。Elasticsearch Kibana是荷兰Elasticsearch公司的一套开源的、基于浏览器的分析和搜索Elasticsearch仪表板工具,作为Elasticsearch的核心组件,Kibana可

不久前Elasticsearch发布了最新安全公告, Elasticsearch Kibana6.4.3之前版本和5.6.13之前版本中的Console插件存在严重的本地文件包含漏洞可导致拒绝服务攻击、任意文件读取攻击、配合第三方应用反弹 SHELL 攻击,下文笔者对其漏洞背景、攻击原理和行为进行分析和复现。

一、影响范围

Elasticsearch Kibana是荷兰Elasticsearch公司的一套开源的、基于浏览器的分析和搜索Elasticsearch仪表板工具,作为Elasticsearch的核心组件,Kibana可作为产品或服务提供,并与各种系统,产品,网站和企业中的其他Elastic Stack产品配合使用。 由于Kibana在大数据领域用途较为广泛,此次漏洞影响范围较大,Shodan搜索结果如图

Elasticsearch核心插件Kibana本地文件包含漏洞分析(CVE-2018-17246)

二、 漏洞场景

笔者选择Kibana-6.1.1-linux-x86_64.tar.gz版本,搭建过程不表,网上很多参考资料

2.1、拒绝服务

拒绝服务笔者选择/cli_plugin/index.js演示,攻击向量如下

Elasticsearch核心插件Kibana本地文件包含漏洞分析(CVE-2018-17246) GET请求发出去后客户端打不开应用页面,在服务端Kibana进程退出,应用服务挂掉具体看下图

Elasticsearch核心插件Kibana本地文件包含漏洞分析(CVE-2018-17246) Elasticsearch核心插件Kibana本地文件包含漏洞分析(CVE-2018-17246)

2.2、任意文件读取

文件读取笔者选择/etc/passwd演示,攻击向量如下

Elasticsearch核心插件Kibana本地文件包含漏洞分析(CVE-2018-17246) GET请求发出去后客户端页面会抛出500错误,在服务端会将读取到的passwd内容抛出来,具体看下图

Elasticsearch核心插件Kibana本地文件包含漏洞分析(CVE-2018-17246) Elasticsearch核心插件Kibana本地文件包含漏洞分析(CVE-2018-17246)

2.3、配合第三方应用

通常情况下Kibana与其他的应用程序一起部署,如果应用程序可以上传或者写入Javascript文件的话,攻击者可以通过Nodejs创建一个Reverse Shell,内容如下

Elasticsearch核心插件Kibana本地文件包含漏洞分析(CVE-2018-17246) 路径遍历允许攻击者访问Kibana服务器任何文件的位置,如下

Elasticsearch核心插件Kibana本地文件包含漏洞分析(CVE-2018-17246) Nc反弹监听得到交互会话

Elasticsearch核心插件Kibana本地文件包含漏洞分析(CVE-2018-17246)

三、漏洞分析

漏洞污染点位于\src\core_plugins\console\api_server\server.js

Elasticsearch核心插件Kibana本地文件包含漏洞分析(CVE-2018-17246) Apis 得到的值传递给赋值参数name,从图上也能看到name变量的内容没有进行任何过滤被引入到require,而require模块在Nodejs里表示加载模块的方式,可以加载核心模块,例如内置的“http”,也可以是包含名为“index.js”这样的文件或目录如果参数以“/”、“./”、”../”开头则函数知道该模块是文件或者文件夹,继续跟进到函数asJson所在的api.js文件中

Elasticsearch核心插件Kibana本地文件包含漏洞分析(CVE-2018-17246) 在同级目录下ES_5_0.js 中有一个这个类的导出实例

Elasticsearch核心插件Kibana本地文件包含漏洞分析(CVE-2018-17246) 总结一下此函数的正常流程是获取导出API类实例并调用函数asJson的JavaScript文件的名称,但是忽略了过滤验证因此我们可以指定任意文件,配合目录跳转遍历就可以实现Kibana服务器上任意文件读取的操作。基于上述的分析很明显Nodejs应用程序需要大量的文件,如果这些文件里包含了process.exit指令,那么就可能关闭Kibana进程并导致拒绝服务攻击,通过搜索找到了三个可能的攻击向量

Elasticsearch核心插件Kibana本地文件包含漏洞分析(CVE-2018-17246)

四、一点总结

LFI通常出现在 PHP 应用中,通样是require这次应用在Nodejs程序中,相信未来还会有更多的Nodejs程序存在这种问题,原因是本地包含漏洞出现了很多年,但依旧有很多软件开发人员和架构师没有考虑到这点,这篇文章很好的说明了Kibana中存在的一个关键LFI漏洞,使得攻击者能够在服务器上运行本地代码,可造成直接的危害就是拒绝服务攻击,若在生产环境下业务实在伤不起,需要引起对Nodejs LFI的重视。

五、参考链接

https://github.com/appsecco/vulnerable-apps/tree/master/node-reverse-shell

https://www.elastic.co/downloads/kibana

http://www.cnvd.org.cn/flaw/show/CNVD-2018-23907

http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-17246

*本文作者: Ivan1ee@360云影实验室,转载请注明来自 FreeBuf.COM。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

On LISP

On LISP

Paul Graham / Prentice Hall / 09 September, 1993 / $52.00

On Lisp is a comprehensive study of advanced Lisp techniques, with bottom-up programming as the unifying theme. It gives the first complete description of macros and macro applications. The book also ......一起来看看 《On LISP》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换