Nginx实战(十)Nginx的漏洞修复

文章目录

    • 本章导读
    • 本章要点
    • Nginx HTTP/2和mp4模块拒绝服务漏洞
      • 描述
      • 解决方案
      • 解释
    • Clickjacking(点击劫持)
      • 描述
      • 解决方案
      • nginx的解决方法
      • 加了x-frame-options后如何验证
    • Nginx range filter模块数字错误漏洞(CVE-2017-7529)
      • 1、漏洞描述
      • 2、影响程度
      • 3 、漏洞原理
      • 4、 漏桶解决
    • nginx版本泄露

本章导读

  • 这么快第十章了,这个阶段是最后一章了,春节也得休息一下
  • 讲下nginx里遇到过的漏洞
  • 以及这些漏洞怎么修复的

本章要点

  • nginx是会有漏洞的,千万不要觉得配置好了就一定安全了
  • 要经常扫描,因为漏洞是时时刻刻都在更新的
  • 一般的方法都收通过升级解决
  • 有时候不方便升级,官网也会提供配置的方法解决

Nginx HTTP/2和mp4模块拒绝服务漏洞

描述

CVE编号: CVE-2018-16843 CVE-2018-16844 CVE-2018-16845 漏洞说明: CVE-2018-16843,CVE-2018-16844漏洞存在于ngx_http_v2模块之中(默认情况下不编译,编译时需要开启–with-http_v2_module,同时将listen http2添加到配置文件中),当用户添加http2支持时,攻击者可以发送特制的HTTP/2请求,消耗CPU和内存资源,最终导致DoS。 CVE-2018-16845漏洞存在于ngx_http_mp4_module模块中,当用户对Nginx添加MP4流媒体支持,恶意的MP4文件会导致处理进程无限循环、崩溃或者内存泄露。

解决方案

关闭http/2请求处理和MP4流媒体支持,强烈建议将Nginx 升级至1.15.6,或1.14.1 stable 最新版本。

解释

这个是去年(2018年)11月才发现的,11月发布了新版本,升级可解决。
这个也是最近发现的一个漏洞了。
https://cloud.tencent.com/info/71abe1e1ae97740ce376d8b46f894dbd.html
下面再讲下久远一点的漏洞。

Clickjacking(点击劫持)

这只是一个低危漏洞,不会有太大的危害,但是也应该解决它。

描述

Clickjacking(点击劫持)是由互联网安全专家罗伯特·汉森和耶利米·格劳斯曼在2008年首创的。 是一种视觉欺骗手段,在web端就是iframe嵌套一个透明不可见的页面,让用户在不知情的情况下,点击攻击者想要欺骗用户点击的位置。服务器端没有返回X-Frame-Options头部,导致该站点存在点击劫持攻击的威胁。X-Frame-Options HTTP 响应头,可以指示浏览器是否应该加载一个iframe中的页面。网站可以通过设置X-Frame-Options阻止站点内的页面被其他页面嵌入从而防止点击劫持。如果您确定不需要将网站内容嵌入其他站点中,请开启选项。

解决方案

解决办法: 1.在站点配置文件httpd.conf中添加如下配置,限制只有站点内的页面才可以嵌入iframe。 Header always append X-Frame-Options SAMEORIGIN 配置之后重启apache使其生效。 该配置方式对IBM HTTP Server同样适用。 2.配置 Apache 配置 Apache 在所有页面上发送 X-Frame-Options 响应头,需要把下面这行添加到 ‘site’ 的配置中: Header always append X-Frame-Options SAMEORIGIN 3.配置 nginx 配置 nginx 发送 X-Frame-Options 响应头,把下面这行添加到 ‘http’, ‘server’ 或者 ‘location’ 的配置中: add_header X-Frame-Options SAMEORIGIN; 4.配置 IIS 配置 IIS 发送 X-Frame-Options 响应头,添加下面的配置到 Web.config 文件中: … … 5.配置 TOMCAT 如果是tomcat服务器,不可能在每个页面去添加:  response.addHeader(“x-frame-options”,“SAMEORIGIN”); 因此可以使用过滤器,代码如下: HttpServletResponse response = (HttpServletResponse) sResponse; response.addHeader(“x-frame-options”,“SAMEORIGIN”); 配置后重启服务器生效。

nginx的解决方法

配置 nginx 发送 X-Frame-Options 响应头,把下面这行添加到 ‘http’, ‘server’ 或者 ‘location’ 的配置中:
add_header X-Frame-Options SAMEORIGIN;

如何解决
https://www.html.cn/archives/5141

很好的解释怎么实现点击劫持:
https://www.cnblogs.com/lovesong/p/5248483.html

注意:是阻止你的网址不被人放在它的iframe里,而不是阻止你的网址不放别的网站在你的iframe里。

加了x-frame-options后如何验证

打开chrome - network -doc
https://www.haoht123.com/680.html

Nginx range filter模块数字错误漏洞(CVE-2017-7529)

1、漏洞描述

在Nginx的range filter中存在整数溢出漏洞,可以通过带有特殊构造的range的HTTP头的恶意请求引发这个整数溢出漏洞,并导致信息泄露。

2、影响程度

攻击成本 低
危害程度 低
影响范围 Nginx 0.5.6 – 1.13.2

3 、漏洞原理

综合来看,这个漏洞就是整数溢出漏洞的利用,能够从Cache文件中获取Cache头的信息。在某些配置的情况下Cache头中会存在IP地址信息,造成信息泄露。

就Nginx模块以及常用的第三方模块本身来说,无法通过这个整数溢出来对内存进行操作或者远程执行。

这个比较复杂,详细看别的文章。
https://www.freebuf.com/articles/terminal/140402.html

4、 漏桶解决

目前厂商已发布升级补丁以修复漏洞,补丁获取链接:
http://mailman.nginx.org/pipermail/nginx-announce/2017/000200.html

如果不能升级,可以在Nginx配置文件中添加max_ranges 1,从而禁用multipart range。

nginx版本泄露

对于nginx服务器,之前曾爆出过不同版本的解析漏洞,比如nginx 0.7.65以下(0.5., 0.6., 0.7.* )全版本系列和0.8.37(0.8.*)以下8系列受影响。下面假设在存在漏洞的站点上有一张图片url地址为:http://x.x.x.x/logo.jpg 而当我们正常访问图片时,nginx会把这个当作非脚本语言直接读取传送会客户端(也就是浏览器),但是

存在解析漏洞的nginx会把如下连接解析并且当作php文件执行~:
http://x.x.x.x/logo.jpg/x.php
http://x.x.x.x/logo.jpgx.php

因此隐藏 Nginx 的版本号,提高安全性。
在配置文件nginx.conf里面,设置如下:server_tokens off;
详细可看:
https://www.freebuf.com/articles/web/149761.html

OK,完。

你可能感兴趣的:(架构,Nginx,nginx)