日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Kibana远程代码执行漏洞攻击方法和漏洞原理分析

發布時間:2025/3/21 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Kibana远程代码执行漏洞攻击方法和漏洞原理分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

漏洞簡介

Kibana存在遠程代碼執行漏洞,影響版本為5.6.15和6.6.0之前的所有版本。擁有Kibana的Timelion模塊訪問權限的人可以以Kibana的運行權限執行任意代碼,包括反彈shell。

環境搭建

領取相關學習資料

靶機環境:

Parrot Security OS 4.7 64位 或其他類Linux操作系統(VMWare 14)

Elasticsearch6.5.4Kibana 6.5.4IP:10.10.10.128

攻擊機環境:

Windows 10 Home 64位Netcat 1.12 64位Chrome瀏覽器IP:172.16.2.62

漏洞利用

領取相關學習資料

1)在靶機上部署Kibana 和Elasticsearch,并開放訪問端口(./config/kibana.xml中的server.host改成0.0.0.0)讓攻擊機可以訪問(如圖1所示)。

圖1 在靶機上部署Elasticsearch和Kibana

2)確認執行權限并啟動Elasticsearch和Kibana(如圖2,3所示)


圖2 在靶機上確認Kibana執行權限


圖3 執行 Elasticsearch和Kibana

在攻擊機上啟動netcat(圖4),并通過Chrome瀏覽器訪問Kibana的Timelion頁面,并輸入payload(圖5)。

圖4 在攻擊機上啟動netcat

圖5 登錄Timelion并在輸入框中輸入payload

payload如圖6所示(為了避免各類糾紛,本文的攻擊代碼只放圖片版,文字版可以去參考鏈接里面自取)

(注意替換payload中的反彈IP為攻擊機IP)

點擊右邊的執行按鈕執行,然后點擊控制面板左邊的Canvas,可以獲取反彈shell
圖6 獲得反彈shell

多次操作之后可能會出現反彈不成功的現象,此時可以刪除kibana目錄并重新部署一次,記得修改kibana.xml!

漏洞機理

領取相關學習資料

“原型污染”是一種針對JS語言開發的攻擊方法。JS語言中,每一個對象都是有其原型(proto)的,而該原型又有其自己的原型對象,直到某個對象的原型為null。而如果JS對其中定義的對象原型的屬性讀寫缺乏控制,容易讓攻擊者操縱一些敏感特征,從而實現攻擊者的目的。

本漏洞就是是一個由于JS語言的“原型污染”,導致靶機環境量被污染,最終獲得shell執行的漏洞。具體調試過程如下

1、POC驗證
1) 在Timelion的輸入框中輸入本漏洞的POC:

2) 點擊canvas,可以發現cookie被污染,頁面無法訪問。

3)通過node調試工具(具體使用方法見參考鏈接)連接后臺,刪除Object.prototype的cookie值,刷新發現頁面暫時恢復正常。因此可以判定該處存在JS原型污染漏洞

2、漏洞產生原理和攻擊思路
1)點擊canvas頁面,可以發現后臺大量報錯,報錯原因是9229端口被占用。因此可以判斷:在點擊canvas頁面的過程中,kibana創建了新的node進程。(注意此時要連接chrome的node調試工具才會看到報錯)因此可以考慮通過劫持環境變量來實現shell命令注入。

2) 在創建新的node進程過程中,必然使用了NODE_OPTIONS環境變量,如果我們可以劫持該變量,那么就能影響node的新進程創建。NODE_OPTIONS不限制–require選項,該選項可以在執行js文件之前首先加載其他js模塊。而在本案例中,實現上傳惡意模塊的思路難以實現。因此考慮進一步污染環境變量的方法來間接達到這一目的。

3、payload構建
在構建payload之前,我們通過調試工具查看Object.protoytpe.env變量。

Timelion中,props方法的官方解釋是:

簡單來說,props可以修改任意對象的屬性值。

因此可以采用props方法來對JS中object對象的原型進行修改,同時也就修改了靶機的環境變量。據此,我們構建出了如下的代碼:


其中,label.proto.env是靶機的環境變量,我們在該變量中添加了一個鍵值對

最后兩個斜杠用于把后面的內容注釋掉。因此我們目前的payload是

點擊執行之后,繼續在調試工具中查看Object.protoytpe.env變量的污染情況:

可以看到env已經被污染

下一步就是污染NODES_OPTIONS變量,讓node命令在運行時執行我們上面構建的反彈shell的命令。

首先考慮使用eval函數,而node的開發者顯然意識到了這是個很危險的設計,因此在NODE_OPTIONS變量中禁用了eval函數,然而卻沒有禁用—require這個選項。因此我們構建這一部分的代碼:

最終,我們構建的payload成了如下結構:

點擊執行之后再次查看env的污染情況

總體來看,我們首先把環境變量修改成了一條js語句,然后又在node執行過程中劫持了執行參數NODE_OPTIONS,這樣構成了完整的攻擊鏈。當然還有最后一步點擊canvas頁面,讓node建立新進程的過程執行起來。從而達到反彈shell的目的。

危害分析和處理建議

領取相關學習資料

危害分析:

CNVD評級:高(A*V:N/AC:L/Au:N/C:C/I:C/A:C)

CNNVD評級:超危

雖然該漏洞是一個遠程命令執行漏洞,但是本人認為該漏洞影響不大。

因為本漏洞是執行在Kibana的宿主機上,而Kibana是一個Elasticsearch的可視化工具,該工具很少有人會把其頁面暴露于公網。

能夠造成威脅的只有一種情況,就是頁面被暴露于公網,而且使用了弱用戶名和弱口令。

故本人認為該漏洞威脅不大。

處理建議:領取相關學習資料

1)及時升級Kibana和Elasticsearch到最新版本,同時盡量用低權限執行Kibana和Elasticsearch。2)盡量不要讓Kibana的Timelion頁面暴露于公網,并檢查是否存在使用弱口令登錄的情況。

總結

以上是生活随笔為你收集整理的Kibana远程代码执行漏洞攻击方法和漏洞原理分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。