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


    漏洞概述

    当使用Nginx标准模块时,攻击者可以通过发送包含恶意构造range域的header请求,来获取响应中的缓存文件头部信息。在某些配置中,缓存文件头可能包含后端服务器的IP地址或其它敏感信息,从而导致信息泄露。

    影响版本

    Nginx version 0.5.6 - 1.13.2

    修复版本

    Nginx version 1.13.3, 1.12.1

    环境搭建

    拉取vulhub

    git clone https://github.com/vulhub/vulhub.git
    
    • 1

    搭建镜像

    cd vulhub/nginx/CVE-2020-7529
    docker-compose up -d
    
    • 1
    • 2

    在这里插入图片描述

    漏洞复现

    运行poc.py
    在这里插入图片描述

    原理解析

    该漏洞的本质实际上是range过滤器整型溢出。
    首先是http range,range可以允许服务器上只发送HTTP消息的一部分到客户端。这样的部分请求对于大型媒体、具有中断和恢复下载进度的下载文件请求很有帮助。

    ngx_http_range_parse函数源码位置:
    https://github.com/nginx/nginx/blob/release-1.13.2/src/http/modules/ngx_http_range_filter_module.c#L301
    这段代码是要把bytes=-中“-”两边的数字取出分别赋值给start和end变量,标记读取文件的偏移和结束位置,当以-开头只给end时,start会自行计算。
    在这里插入图片描述

    对于有额外头部的缓存文件若start值为负(合适的负值),那么就意味着缓存文件的头部也会被读取。
    图中阐述了如何使start<0,但end的构造如果略大于content_length,则无法通过以下校验:
    在这里插入图片描述

    而end如果过大,又会使start的绝对值过大,远超文件长度,使读取失败。
    因此,可以构造前小后大两个end值:bytes=-X,-Y,使得start为较小的负值,而size会巨大,即可绕过检查。
    如下是payload:
    在这里插入图片描述

    打印出range:
    在这里插入图片描述

    修复方法

    https://github.com/nginx/nginx/compare/release-1.13.2…release-1.13.3#diff-478bbf7792c487160c237dc997ea53fa0cc9bfd24e4ab9cd9cddf6272d510c45
    在这里插入图片描述

    加入了更完善的校验机制。

  • 相关阅读:
    【从零开始一步步学习VSOA开发】并行RPC服务端
    深入浅出排序算法之堆排序
    (02)Cartographer源码无死角解析-(10) 配置文件加载
    GAN原理及代码实现
    CY3/CY3.5/CY5/CY5.5/CY7/CY7.5标记链霉亲和素 Streptavidin
    leetcode刷题日记:141. Linked List Cycle(环形链表)
    推荐几款比较使用的idea插件
    Python +大数据-知行教育(四)-意向用户主题看板_全量流程
    MySQL (2)
    .NET 升级发布后,IIS出现了System.IO.DirectoryNotFoundException
  • 原文地址:https://blog.csdn.net/mirocky/article/details/133809509
  • 最新文章
  • 面试必问:公司用AI 赋能自动化,你是怎么用AI 做自动化测试的呢?(附落地全流程)
    【动手学大语言模型】神经网络启蒙:PyTorch 入门实战
    Paxos算法:如何解决分布式系统中的共识问题?
    和AI一起搞事情#5:技能进阶与Claude Design初体验
    .NET 11 Preview 4 正式发布:Runtime-Async 全面启用、Process API 大幅扩展
    大数据没那么远:把散乱数据理顺,让业务敢用
    高性能百度OCR ONNX Runtime C#实现
    C#/.NET/.NET Core技术前沿周刊 | 第 70 期(2026年5.01-5.10)
    Triton学习 · Part 1 · Hello, world!
    manyspeech-cli 本地命令行语音识别工具
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号