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

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

内容简介:作者:Ivan1ee@360云影实验室不久前Elasticsearch发布了最新安全公告, Elasticsearch Kibana 6.4.3之前版本和5.6.13之前版本中的Console插件存在严重的本地文件包含漏洞可导致拒绝服务攻击、任意文件读取攻击、配合第三方应用反弹SHELL攻击,下文笔者对其漏洞背景、攻击原理和行为进行分析和复现。

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

作者:Ivan1ee@360云影实验室

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

0X01 影响范围

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

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

0x02 漏洞场景

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

2.1、拒绝服务

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

/api/console/api_server?sense_version=%40%40SENSE_VERSION&apis= ../../../cli_plugin/index

GET请求发出去后客户端打不开应用页面,在服务端Kibana进程退出,应用服务挂掉具体看下图

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

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

2.2、任意文件读取

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

/api/console/api_server?sense_version=%40%40SENSE_VERSION&apis=../../../../../../../../../../../etc/passwd

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)

0X03 漏洞分析

漏洞污染点位于 \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进程并导致拒绝服务攻击,通过搜索找到了三个可能的攻击向量

引发DOS攻击的向量
../../../cli_plugin/index.js
../../../cli_plugin/cli.js
../../../docs/cli.js

0x04 一点总结

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

0x05 参考链接

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


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

查看所有标签

猜你喜欢:

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

数据结构与算法分析(C++版)(第3版)

数据结构与算法分析(C++版)(第3版)

Clifford A. Shaffer / 张铭、刘晓丹、等译 / 电子工业出版社 / 2013 / 59.00元

本书采用当前流行的面向对象的C++程序设计语言来描述数据结构和算法, 因为C++语言是程序员最广泛使用的语言。因此, 程序员可以把本书中的许多算法直接应用于将来的实际项目中。尽管数据结构和算法在设计本质上还是很底层的东西, 并不像大型软件工程项目开发那样, 对面向对象方法具有直接的依赖性, 因此有人会认为并不需要采用高层次的面向对象技术来描述底层算法。 但是采用C++语言能更好地体现抽象数据类型的......一起来看看 《数据结构与算法分析(C++版)(第3版)》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

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

在线XML、JSON转换工具