漏洞简介

Kibana存在远程代码执行漏洞,影响版本为5.6.15和6.6.0之前的所有版本。拥有Kibana的Timelion模块访问权限的人可以以Kibana的运行权限执行任意代码,包括反弹shell。

环境搭建

领取相关学习资料

靶机环境:

Parrot Security OS 4.7 64位 或其他类Linux操作系统(VMWare 14)

Elasticsearch6.5.4Kibana 6.5.4IP:10.10.10.128

攻击机环境:

Windows 10 Home 64位Netcat 1.12 64位Chrome浏览器IP:172.16.2.62

漏洞利用

领取相关学习资料

1)在靶机上部署Kibana 和Elasticsearch,并开放访问端口(./config/kibana.xml中的server.host改成0.0.0.0)让攻击机可以访问(如图1所示)。

图1 在靶机上部署Elasticsearch和Kibana

2)确认执行权限并启动Elasticsearch和Kibana(如图2,3所示)


图2 在靶机上确认Kibana执行权限


图3 执行 Elasticsearch和Kibana

在攻击机上启动netcat(图4),并通过Chrome浏览器访问Kibana的Timelion页面,并输入payload(图5)。

图4 在攻击机上启动netcat

图5 登录Timelion并在输入框中输入payload

payload如图6所示(为了避免各类纠纷,本文的攻击代码只放图片版,文字版可以去参考链接里面自取)

(注意替换payload中的反弹IP为攻击机IP)

点击右边的执行按钮执行,然后点击控制面板左边的Canvas,可以获取反弹shell
图6 获得反弹shell

多次操作之后可能会出现反弹不成功的现象,此时可以删除kibana目录并重新部署一次,记得修改kibana.xml!

漏洞机理

领取相关学习资料

“原型污染”是一种针对JS语言开发的攻击方法。JS语言中,每一个对象都是有其原型(proto)的,而该原型又有其自己的原型对象,直到某个对象的原型为null。而如果JS对其中定义的对象原型的属性读写缺乏控制,容易让攻击者操纵一些敏感特征,从而实现攻击者的目的。

本漏洞就是是一个由于JS语言的“原型污染”,导致靶机环境量被污染,最终获得shell执行的漏洞。具体调试过程如下

1、POC验证
1) 在Timelion的输入框中输入本漏洞的POC:

2) 点击canvas,可以发现cookie被污染,页面无法访问。

3)通过node调试工具(具体使用方法见参考链接)连接后台,删除Object.prototype的cookie值,刷新发现页面暂时恢复正常。因此可以判定该处存在JS原型污染漏洞

2、漏洞产生原理和攻击思路
1)点击canvas页面,可以发现后台大量报错,报错原因是9229端口被占用。因此可以判断:在点击canvas页面的过程中,kibana创建了新的node进程。(注意此时要连接chrome的node调试工具才会看到报错)因此可以考虑通过劫持环境变量来实现shell命令注入。

2) 在创建新的node进程过程中,必然使用了NODE_OPTIONS环境变量,如果我们可以劫持该变量,那么就能影响node的新进程创建。NODE_OPTIONS不限制–require选项,该选项可以在执行js文件之前首先加载其他js模块。而在本案例中,实现上传恶意模块的思路难以实现。因此考虑进一步污染环境变量的方法来间接达到这一目的。

3、payload构建
在构建payload之前,我们通过调试工具查看Object.protoytpe.env变量。

Timelion中,props方法的官方解释是:

简单来说,props可以修改任意对象的属性值。

因此可以采用props方法来对JS中object对象的原型进行修改,同时也就修改了靶机的环境变量。据此,我们构建出了如下的代码:


其中,label.proto.env是靶机的环境变量,我们在该变量中添加了一个键值对

最后两个斜杠用于把后面的内容注释掉。因此我们目前的payload是

点击执行之后,继续在调试工具中查看Object.protoytpe.env变量的污染情况:

可以看到env已经被污染

下一步就是污染NODES_OPTIONS变量,让node命令在运行时执行我们上面构建的反弹shell的命令。

首先考虑使用eval函数,而node的开发者显然意识到了这是个很危险的设计,因此在NODE_OPTIONS变量中禁用了eval函数,然而却没有禁用—require这个选项。因此我们构建这一部分的代码:

最终,我们构建的payload成了如下结构:

点击执行之后再次查看env的污染情况

总体来看,我们首先把环境变量修改成了一条js语句,然后又在node执行过程中劫持了执行参数NODE_OPTIONS,这样构成了完整的攻击链。当然还有最后一步点击canvas页面,让node建立新进程的过程执行起来。从而达到反弹shell的目的。

危害分析和处理建议

领取相关学习资料

危害分析:

CNVD评级:高(A*V:N/AC:L/Au:N/C:C/I:C/A:C)

CNNVD评级:超危

虽然该漏洞是一个远程命令执行漏洞,但是本人认为该漏洞影响不大。

因为本漏洞是执行在Kibana的宿主机上,而Kibana是一个Elasticsearch的可视化工具,该工具很少有人会把其页面暴露于公网。

能够造成威胁的只有一种情况,就是页面被暴露于公网,而且使用了弱用户名和弱口令。

故本人认为该漏洞威胁不大。

处理建议:领取相关学习资料

1)及时升级Kibana和Elasticsearch到最新版本,同时尽量用低权限执行Kibana和Elasticsearch。2)尽量不要让Kibana的Timelion页面暴露于公网,并检查是否存在使用弱口令登录的情况。

Kibana远程代码执行漏洞攻击方法和漏洞原理分析相关推荐

  1. cve-2019-7609 Kibana远程代码执行漏洞攻击方法和漏洞原理分析

    目录 0x00 前言 0x01 漏洞简介 0x02 环境搭建 0x03 漏洞利用 0x04 漏洞机理 1.POC验证 ​2.漏洞产生原理和攻击思路 3.payload构建 0x05 危害分析和处理建议 ...

  2. Fastjson 1.2.24远程代码执行漏洞(com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl)

    1.漏洞信息 1.1 漏洞简介 · 漏洞名称:Fastjson 1.2.24远程代码执行漏洞(com.sun.org.apache.xalan.internal.xsltc.trax.Template ...

  3. Gitea 1.4 未授权远程代码执行漏洞复现

    ​Gitea 1.4 未授权远程代码执行 一.漏洞描述 Gitea是从gogs衍生出的一个开源项目,是一个类似于Github.Gitlab的多用户Git仓库管理平台.其1.4.0版本中有一处逻辑错误, ...

  4. 网络安全漏洞分析之远程代码执行

    介绍 Apache Flume 是一个分布式的,可靠的,并且可用于高效地收集,汇总和移动大量日志数据的软件.它具有基于流数据流的简单而灵活的体系结构.它具有可调的可靠性机制以及许多故障转移和恢复机制, ...

  5. 赏金猎人计算机病毒,GitLab 向「赏金猎人」颁发 20,000 美元赏金,用于修补远程代码执行漏洞...

    原标题:GitLab 向「赏金猎人」颁发 20,000 美元赏金,用于修补远程代码执行漏洞 技术编辑:王治治丨发自 猫爬架 SegmentFault 思否报道丨公众号:SegmentFault 近日, ...

  6. sqlite 0转换为bit_Cisco Talos在SQLite中发现了一个远程代码执行漏洞

    思科Talos的研究人员在SQLite中发现了一个use-after-free() 的漏洞,攻击者可利用该漏洞在受影响设备上远程执行代码. 攻击者可以通过向受影响的SQLite安装发送恶意SQL命令来 ...

  7. Apache Log4j2远程代码执行漏洞攻击,华为云安全支持检测拦截

    近日,华为云安全团队关注到Apache Log4j2 的远程代码执行最新漏洞.Apache Log4j2是一款业界广泛使用的基于Java的日志工具,该组件使用范围广泛,利用门槛低,漏洞危害极大.华为云 ...

  8. 详述 PyPI 中的远程代码执行漏洞,可引发供应链攻击

     聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士 日本安全研究员RyotaK 曾在上周发现Cloudflare 公司CDNJS 服务中的一个漏洞,可导致第三方在当前12%的网站上运行恶意代 ...

  9. Linux包管理器apt/apt-get发现远程代码执行漏洞

    研究人员Max Justicz日前发现了知名Linux包管理器apt/apt-get中的远程代码执行漏洞,该漏洞允许外部进行中间人攻击并获取root权限以执行任何代码.该漏洞已在最新版本apt修复,如 ...

最新文章

  1. Unity3D研究院之C#使用Socket与HTTP连接服务器传输数据包
  2. 中国会计信息化的四级阶梯
  3. easyui datagrid
  4. 最优化——线性规划总结1(线性规划标准型,规范型,顶点)
  5. python中的轻量级定时任务调度库:schedule
  6. 初步认识Volatile-缓存一致性协议
  7. C——printf和scanf返回值问题
  8. 【Es】ElasticSearch 自定义分词器
  9. layui单选框verify_layui 单选框选中事件
  10. edit box小技巧
  11. 410.分割数组的最大值
  12. 控制继电器(esp32+继电器)
  13. 网页制作大作业HTML+CSS制作静态网页----原神
  14. 京东商城在掩盖什么?(1)
  15. 搞定 WeakHashMap 的工作原理一篇文章就够了!!!
  16. 在命令行窗口中打开win10的显示设置
  17. 近10年NBA球队常规赛排名变化——tableau 实现bump chart
  18. 长江实业全新超甲级商业地标 长江集团中心二期设计理念以人为本
  19. 简单的面向对象思想,写一个传奇人物的属性
  20. Web-AK47网络验证码攻击工具

热门文章

  1. 成功解决Eclipse打开py等文件出现乱码
  2. Python:利用python编程将上海十六区,2020年5月份房价实时地图(数据来源房天下)进行柱状图、热图可视化
  3. Algorithm:C++语言实现之概率算法相关问题(计算机中的概率事件、C语言中的随机事件、产生二维随机数、圆内均匀取点)
  4. Algorithm:C++语言实现之贪心法算法相关问题
  5. Py之pygame:有趣好玩——利用pygame库实现一个移动底座弹球的小游戏
  6. 最小割板子题——[USACO5.4]奶牛的电信
  7. 一个判断射线和三角形相交的函数
  8. nrf51822-提高nordic ble数据发送速率
  9. python正则表达式——regex模块
  10. 图形基础 GPU架构(4)GPU CPU