Node.js 反序列化遠程代碼執(zhí)行漏洞(CVE-2017-5941)漏洞復現(xiàn)

2 月 10 日,Node.js 曝存在反序列化遠程代碼執(zhí)行漏洞。漏洞 CVE 編號 CVE-2017-5941。攻擊者利用此漏洞通過構(gòu)造 Payload 對服務器進行遠程攻擊,從而獲得服務器權(quán)限。

漏洞復現(xiàn).jpg

Node.js 是一個 Javascript 運行環(huán)境 (runtime)。實際上它是對 Google V8 引擎進行了封裝。V8 引擎執(zhí)行 Javascript 的速度非??欤阅芊浅:?。Node.js 對一些特殊用例進行了優(yōu)化,提供了替代的 API,使得 V8 在非瀏覽器環(huán)境下運行得更好。


漏洞原理:

Node.js 的 node-serialize 庫中存在一個漏洞,該漏洞通過傳輸 JavaScript IIFE,利用惡意代碼(未信任數(shù)據(jù))達到反序列化遠程任意代碼執(zhí)行的效果。

下面我們在本地搭建服務器進行原理演示:

1、在 Ubuntu14.04 安裝 Node.js,Node.js 版本 6.9.5 。

Node.js 版本 6.9.5

2、創(chuàng)建以下 JavaScript 對象,將其傳入 serialize() 函數(shù):

創(chuàng)建JavaScript 對象

3、輸出結(jié)果如下:

輸出結(jié)果

4、serialize() 序列化的字符串,可以用 unserialize() 函數(shù)進行反序列化操作。在之前序列化的字符串中函數(shù)體后面加上 "()",并傳入 unserialize() 函數(shù),就可以成功觸發(fā)代碼執(zhí)行:

反序列化操作觸發(fā)代碼執(zhí)行

5、執(zhí)行結(jié)果如下:(ls 為例)

代碼執(zhí)行l(wèi)s

6、執(zhí)行結(jié)果如下:(ifconfig 為例)

代碼執(zhí)行ifconfig

友情提示:

(1)修改 /node_modules/node-serialize/lib/serialize.js 中的 FUNCFLAG 值為隨機值并保證該值不被泄漏。
(2)確保 Serialize 字符串僅內(nèi)部發(fā)送。
(3)使用公鑰(RAS)加密 Serialize 字符串,確保字符串不被篡改。


參考鏈接:
https://www.exploit-db.com/docs/41289.pdf
https://github.com/luin/serialize

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • Node.js是目前非?;馃岬募夹g(shù),但是它的誕生經(jīng)歷卻很奇特。 眾所周知,在Netscape設計出JavaScri...
    Myselfyan閱讀 4,206評論 2 58
  • 本文由我首發(fā)于 GitChat 中。 前言 在 Node.js 開發(fā)領域中,原生 C++ 模塊的開發(fā)一直是一個被人...
    機巧死月不會碼代碼閱讀 5,415評論 6 24
  • Node.js是目前非?;馃岬募夹g(shù),但是它的誕生經(jīng)歷卻很奇特。 眾所周知,在Netscape設計出JavaScri...
    w_zhuan閱讀 3,737評論 2 41
  • 個人入門學習用筆記、不過多作為參考依據(jù)。如有錯誤歡迎斧正 目錄 簡書好像不支持錨點、復制搜索(反正也是寫給我自己看...
    kirito_song閱讀 2,655評論 1 37
  • 沒有情人的情人節(jié) 不只是孤單寂寞 留給人的是思索 愛是什么 情是否帶來了快樂 到底得到多少算多 真的很困惑…… 生...
    琢玉書生閱讀 315評論 3 9

友情鏈接更多精彩內(nèi)容