美文网首页我爱编程
Node.js 反序列化远程代码执行漏洞(CVE-2017-59

Node.js 反序列化远程代码执行漏洞(CVE-2017-59

作者: 陌小皓 | 来源:发表于2017-03-29 09:24 被阅读0次

    2 月 10 日,Node.js 曝存在反序列化远程代码执行漏洞。漏洞 CVE 编号 CVE-2017-5941。攻击者利用此漏洞通过构造 Payload 对服务器进行远程攻击,从而获得服务器权限。

    漏洞复现.jpg

    Node.js 是一个 Javascript 运行环境 (runtime)。实际上它是对 Google V8 引擎进行了封装。V8 引擎执行 Javascript 的速度非常快,性能非常好。Node.js 对一些特殊用例进行了优化,提供了替代的 API,使得 V8 在非浏览器环境下运行得更好。


    漏洞原理:

    Node.js 的 node-serialize 库中存在一个漏洞,该漏洞通过传输 JavaScript IIFE,利用恶意代码(未信任数据)达到反序列化远程任意代码执行的效果。

    下面我们在本地搭建服务器进行原理演示:

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

    Node.js 版本 6.9.5

    2、创建以下 JavaScript 对象,将其传入 serialize() 函数:

    创建JavaScript 对象

    3、输出结果如下:

    输出结果

    4、serialize() 序列化的字符串,可以用 unserialize() 函数进行反序列化操作。在之前序列化的字符串中函数体后面加上 "()",并传入 unserialize() 函数,就可以成功触发代码执行:

    反序列化操作触发代码执行

    5、执行结果如下:(ls 为例)

    代码执行ls

    6、执行结果如下:(ifconfig 为例)

    代码执行ifconfig
    友情提示:

    (1)修改 /node_modules/node-serialize/lib/serialize.js 中的 FUNCFLAG 值为随机值并保证该值不被泄漏。
    (2)确保 Serialize 字符串仅内部发送。
    (3)使用公钥(RAS)加密 Serialize 字符串,确保字符串不被篡改。


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

    相关文章

      网友评论

        本文标题:Node.js 反序列化远程代码执行漏洞(CVE-2017-59

        本文链接:https://www.haomeiwen.com/subject/suceottx.html