漏洞修复
? 在配置文件nginx.conf里面,设置如下:server_tokens off 。
05
整数溢出漏洞
漏洞介绍
在Nginx的range filter中存在整数溢出漏洞 , 可以通过带有特殊构造的range的HTTP头的恶意请求引发这个整数溢出漏洞 , 并导致信息泄露 。
HTTP的Range允许客户端分批次请求资源的一部分 , 如果服务端资源较大 , 可以通过Range来并发下载;如果访问资源时网络中断 , 可以断点续传 。Range设置在HTTP请求头中 , 它是多个byte-range-spec(或suffix-byte-range-spec)的集合 , 如下所示:

文章插图
其中 , first-bytes-pos指定了访问的第一个字节 , last-byte-pos指定了最后一个字节 , suffix-length则表示要访问资源的最后suffix-length个字节的内容 。例如:
Range:bytes=0-1024 表示访问第0到第1024字节;
Range:bytes=500-600,601-999 , -300 表示分三块访问 , 分别是500到600字节 , 601到600字节 , 最后的300字节 。
在Response头中设置:Accept-Ranges:bytes 表示接受部分资源的请求;
Content-Range: bytes START-END/SIZE 表示返回的资源位置;其中SIZE等于Content-Length;如:Content-Range: bytes 500-600/1000
如果一次请求有多个range , 返回的数据需要multipart来组织;格式如下:

文章插图
Nginx对Range的支持包括header处理和body处理 , 分别用来解析客户端发送过来的Range header和裁剪返回给客户端的请求数据Body 。其实现分别由ngx_http_range_header_filter_module和ngx_http_range_body_filter_module两个过滤模块完成 。
在ngx_http_range_header_filter_module中调用了ngx_http_range_header_filter函数 , 而该函数进一步调用了ngx_http_range_parse函数来解析header中的Range字段;分别调用ngx_http_range_singlepart_header和ngx_http_range_multipart_header来生成single range和multi ranges的Response Header;
本次复现利用使用Nginx-1.12.0作为缓存服务器 , 缓存配置同上文 , 访问的目标文件仍然是http://www.baidu.com/img/bd_logo1.png。
首先 , 不指定range , 得到该图片文件的长度为7877 , 如下所示:

文章插图
设置第一段range为-8500 , 此时的start为7877-8500=-623 , 即图片在Cache文件偏移之前的623 bytes也会被返回 , 而这623 bytes中就包含了Cache文件头部 。
下一步 , 按照上文所说 , 第二段range的长度需要将总长度溢出 。我们的目标总和size为0×8000000000000000 , 第一段range长度为8500 , 故第二段range长度为0×8000000000000000-8500=9223372036854767308 。
于是 , 使用curl命令 , 配合-r参数指定bytes range:

文章插图
可以看到返回内容中 , 第一段即为-8500的range , 而这一段中我们就看到了Cache文件头部 , 例如cache key以及后端服务器返回的HTTP头 。
漏洞修复
? 综合来看 , 这个漏洞就是整数溢出漏洞的利用 , 能够从Cache文件中获取Cache头的信息 。在某些配置的情况下Cache头中会存在IP地址信息 , 造成信息泄露 。就Nginx模块以及常用的第三方模块本身来说 , 无法通过这个整数溢出来对内存进行操作或者远程执行 。
? 建议升级到1.13.3和1.12.1版本;如果不能升级 , 可以在Nginx配置文件中添加max_ranges 1 , 从而禁用multipart range 。
【五个案例“熄灭”Nginx漏洞隐患】
推荐阅读
- 《雪中悍刀行》:雪中风流人物有谁?还看“春秋十三甲”
- 河南省的3大“可怜茶”,口感媲美信阳毛尖,可惜就是出不了省
- 人力资源|6幅图,完美诠释学生工作后的心态转变,逐渐演变成“放弃治疗”
- “中国第一水乡”周庄 周庄在哪里
- 还在无人区里找浪漫?“死亡之地”了解一下
- “神兽”羊驼,究竟是羊还是驼?
- 还在外借驾照“仗义”销分?一图带你看懂扣分细则
- 都说黑洞“一毛不拔”科学家却想从中“榨取”能量
- 起底“高端洋牌”Lululemon:瑜伽裤都来收割中产阶级了
- 英德红茶有什么“特异的疗效”呢?
