Nginx越界读取缓存漏洞复现(CVE-2017-7529)
漏洞简介
漏洞编号:
CVE-2017-15715
漏洞影响范围:
Nginx version 0.5.6 - 1.13.2
漏洞原理:
Nginx在反向代理站点的时候,通常会将一些文件进行缓存,特别是静态文件。缓存的部分存储在文件中,每个缓存文件包括“文件头”+“HTTP返回包头”+“HTTP返回包体”。如果二次请求命中了该缓存文件,则Nginx会直接将该文件中的“HTTP返回包体”返回给用户。
如果我的请求中包含Range头,Nginx将会根据我指定的start和end位置,返回指定长度的内容。而如果我构造了两个负的位置,如(-600, -9223372036854774591),将可能读取到负位置的数据。如果这次请求又命中了缓存文件,则可能就可以读取到缓存文件中位于“HTTP返回包体”前的“文件头”、“HTTP返回包头”等内容。
漏洞复现
环境搭建:
安装docker
1. curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo 2. yum install https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/containerd.io-1.2.6-3.3.fc30.x86_64.rpm 3. yum install docker-ce 4. systemctl start docker
更换镜像的下载源
vi /etc/docker/daemon.json
直接替换里面的内容为:
{
“registry-mirrors”: [“https://xxxxx.mirrors.aliyun.com”]
}
网址在阿里云容器镜像服务获取:
https://www.aliyun.com/product/acr?spm=a2c4g.11174283.2.1.625e4541j1IFor
重启docker服务:
systemctl daemon-reload systemctl restart docker
测试docker服务是否正常:
docker pull busybox docker run busybox echo “hello world”
输出hello world即docker正常运行。
部署漏洞所需环境:
复现漏洞可以直接使用vulhub上的docker镜像
项目可以下载至任意目录下,我这里在root目录下
git clone https://github.com/vulhub/vulhub
进入项目需要复现的漏洞编号下
cd vulhub/vulhub-master/nginx/CVE-2017-7529
把我们需要的项目起来
docker-compose up -d
此命令需要python环境,还需要再单独下载
yum install -y python38 可能yum源里没有python38,也可以装其他版本,可以执行get-pip.py文件即可 wget https://bootstrap.pypa.io/get-pip.py sudo python3 get-pip.py pip -version pip install docker-compose
环境搭建完成,测试docker运行情况,查看映射端口:
docker ps
攻击机浏览器打开http://your-ip:8080,查看环境搭建是否成功。
环境搭建成功!
而这里其实已经默认开启了反向代理,我们访问的8080端口是docker的8080端口映射到虚拟机的8080端口,而docker的8080端口是8081端口反向代理过去的内容。
漏洞验证:
我们验证漏洞需要用到的POC在vulhub中已经有了,所以直接在本地复现。
这里直接使用poc验证是否能够读取到文件头
可以看到已经读取到了HTTP返回包体之前的文件头和HTTP返回包头。
- 利用Vulnhub复现漏洞 - Nginx越界读取缓存漏洞(CVE-2017-7529)
- 平滑升级Nginx到新版本v1.12.1修复Nginx最新漏洞CVE-2017-7529
- Nginx敏感信息泄露漏洞(CVE-2017-7529)
- 使用Docker搭建Nginx整数溢出漏洞(CVE-2017-7529)及Python PoC验证
- 关于centos7和centos6中平滑升级nginx到新版本v1.12.1修复nginx最新漏洞CVE-2017-7529的解决方案
- Nginx 远程整数溢出漏洞(CVE-2017-7529)
- 关于centos7和centos6中平滑升级nginx到新版本v1.12.1修复nginx最新漏洞CVE-2017-7529的解决方案
- 关于centos7和centos6中平滑升级nginx到新版本v1.12.1修复nginx最新漏洞CVE-2017-7529的解决方案
- CentOS7下升级nginx到新版本v1.12.1修复CVE-2017-7529漏洞
- CVE-2017-0199漏洞复现与研究
- 利用Vulnhub复现漏洞 - Jenkins-CI 远程代码执行漏洞(CVE-2017-1000353)
- 利用Vulnhub复现漏洞 - Couchdb 任意命令执行漏洞(CVE-2017-12636)
- 利用Vulnhub复现漏洞 - Gitlab 任意文件读取漏洞(CVE-2016-9086)
- 利用Vulnhub复现漏洞 - Couchdb 垂直权限绕过漏洞(CVE-2017-12635)
- 利用Vulnhub复现漏洞 - Couchdb 垂直权限绕过漏洞(CVE-2017-12635)
- CVE-2017-8464 远程命令执行漏洞复现
- IIS_CVE-2017-7269 IIS6.0远程代码执行漏洞复现
- Struts2——052(CVE-2017-9805)远程代码执行漏洞复现
- 利用Vulnhub复现漏洞 - ffmpeg 任意文件读取漏洞/SSRF漏洞 (CVE-2016-1897/CVE-2016-1898)
- CVE-2017-8464远程命令执行漏洞复现