Elasticsearch 核心插件Kibana 本地文件包含漏洞分析(CVE-2018-17246)

作者:Ivan1ee@360雲影實驗室

不久前Elasticsearch發佈了最新安全公告, Elasticsearch Kibana 6.4.3之前版本和5.6.13之前版本中的Console插件存在嚴重的本地文件包含漏洞可導致拒絕服務攻擊、任意文件讀取攻擊、配合第三方應用反彈SHELL攻擊,下文筆者對其漏洞背景、攻擊原理和行爲進行分析和復現。

0X01 影響範圍

Elasticsearch Kibana是荷蘭Elasticsearch公司的一套開源的、基於瀏覽器的分析和搜索Elasticsearch儀表板工具,作爲Elasticsearch的核心組件,Kibana可作爲產品或服務提供,並與各種系統,產品,網站和企業中的其他Elastic Stack產品配合使用。 由於Kibana在大數據領域用途較爲廣泛,此次漏洞影響範圍較大, Shodan搜索結果如圖 xise

 

0x02 漏洞場景

筆者選擇Kibana-6.1.1-linux-x86_64.tar.gz版本,搭建過程不表,網上很多參考資料

2.1、拒絕服務

拒絕服務筆者選擇/cli_plugin/index.js演示,攻擊向量如下

/api/console/api_server?sense_version=%40%40SENSE_VERSION&apis= ../../../cli_plugin/index

GET請求發出去後客戶端打不開應用頁面,在服務端Kibana進程退出,應用服務掛掉具體看下圖 http://caidaome.com

2.2、任意文件讀取

文件讀取筆者選擇/etc/passwd演示,攻擊向量如下

/api/console/api_server?sense_version=%40%40SENSE_VERSION&apis=../../../../../../../../../../../etc/passwd

GET請求發出去後客戶端頁面會拋出500錯誤,在服務端會將讀取到的passwd內容拋出來,具體看下圖

2.3、配合第三方應用

通常情況下Kibana與其他的應用程序一起部署,如果應用程序可以上傳或者寫入Javascript文件的話,攻擊者可以通過Nodejs創建一個Reverse Shell,內容如下 騰訊分分彩

路徑遍歷允許攻擊者訪問Kibana服務器任何文件的位置,如下

Nc反彈監聽得到交互會話

 

0X03 漏洞分析

漏洞污染點位於 \src\core_plugins\console\api_server\server.js

Apis得到的值傳遞給賦值參數name,從圖上也能看到name變量的內容沒有進行任何過濾被引入到require,而require模塊在Nodejs裏表示加載模塊的方式,可以加載核心模塊,例如內置的“http”,也可以是包含名爲“index.js”這樣的文件或目錄如果參數以“/”、“./”、”../”開頭則函數知道該模塊是文件或者文件夾,繼續跟進到函數asJson所在的api.js文件中

在同級目錄下ES_5_0.js 中有一個這個類的導出實例

總結一下此函數的正常流程是獲取導出API類實例並調用函數asJson的JavaScript文件的名稱,但是忽略了過濾驗證因此我們可以指定任意文件,配合目錄跳轉遍歷就可以實現Kibana服務器上任意文件讀取的操作。基於上述的分析很明顯Nodejs應用程序需要大量的文件,如果這些文件裏包含了process.exit指令,那麼就可能關閉Kibana進程並導致拒絕服務攻擊,通過搜索找到了三個可能的攻擊向量

引發DOS攻擊的向量
../../../cli_plugin/index.js
../../../cli_plugin/cli.js
../../../docs/cli.js

 

0x04 一點總結

LFI通常出現在PHP應用中,通樣是require這次應用在Nodejs程序中,相信未來還會有更多的Nodejs程序存在這種問題,原因是本地包含漏洞出現了很多年,但依舊有很多軟件開發人員和架構師沒有考慮到這點,這篇文章很好的說明了Kibana中存在的一個關鍵LFI漏洞,使得攻擊者能夠在服務器上運行本地代碼,可造成直接的危害就是拒絕服務攻擊,若在生產環境業務實在傷不起,需要引起對Nodejs LFI的重視。 http://kj169.cc/

 

0x05 參考鏈接

https://github.com/appsecco/vulnerable-apps/tree/master/node-reverse-shell

https://www.elastic.co/downloads/kibana

http://www.cnvd.org.cn/flaw/show/CNVD-2018-23907

http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-17246

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章