您好,登錄后才能下訂單哦!
如何進行Elasticsearch核心插件Kibana本地文件包含漏洞的分析,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
不久前Elasticsearch發布了最新安全公告, Elasticsearch Kibana6.4.3之前版本和5.6.13之前版本中的Console插件存在嚴重的本地文件包含漏洞可導致拒絕服務攻擊、任意文件讀取攻擊、配合第三方應用反彈SHELL攻擊,下文筆者對其漏洞背景、攻擊原理和行為進行分析和復現。
Elasticsearch Kibana是荷蘭Elasticsearch公司的一套開源的、基于瀏覽器的分析和搜索Elasticsearch儀表板工具,作為Elasticsearch的核心組件,Kibana可作為產品或服務提供,并與各種系統,產品,網站和企業中的其他Elastic Stack產品配合使用。 由于Kibana在大數據領域用途較為廣泛,此次漏洞影響范圍較大,Shodan搜索結果如圖
筆者選擇Kibana-6.1.1-linux-x86_64.tar.gz版本,搭建過程不表,網上很多參考資料
拒絕服務筆者選擇/cli_plugin/index.js演示,攻擊向量如下
GET請求發出去后客戶端打不開應用頁面,在服務端Kibana進程退出,應用服務掛掉具體看下圖
文件讀取筆者選擇/etc/passwd演示,攻擊向量如下
GET請求發出去后客戶端頁面會拋出500錯誤,在服務端會將讀取到的passwd內容拋出來,具體看下圖
通常情況下Kibana與其他的應用程序一起部署,如果應用程序可以上傳或者寫入Javascript文件的話,攻擊者可以通過Nodejs創建一個Reverse Shell,內容如下
路徑遍歷允許攻擊者訪問Kibana服務器任何文件的位置,如下
Nc反彈監聽得到交互會話
漏洞污染點位于\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進程并導致拒絕服務攻擊,通過搜索找到了三個可能的攻擊向量
LFI通常出現在PHP應用中,通樣是require這次應用在Nodejs程序中,相信未來還會有更多的Nodejs程序存在這種問題,原因是本地包含漏洞出現了很多年,但依舊有很多軟件開發人員和架構師沒有考慮到這點,這篇文章很好的說明了Kibana中存在的一個關鍵LFI漏洞,使得攻擊者能夠在服務器上運行本地代碼,可造成直接的危害就是拒絕服務攻擊,若在生產環境下業務實在傷不起,需要引起對Nodejs LFI的重視。
關于如何進行Elasticsearch核心插件Kibana本地文件包含漏洞的分析問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。