Nginx是美国Nginx公司的一款轻量级Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。 nginx存在安全漏洞,该漏洞源于一个离一错误在该漏洞允许远程攻击者可利用该漏洞在目标系统上执行任意代码。 受影响版本:0.6.18-1.20.0
-
厂商补丁: 目前厂商已发布升级补丁以修复漏洞,补丁获取链接: https://www.nginx.com/blog/updating-nginx-dns-resolver-vulnerability-cve-2021-23017/
-
根据补丁链接的提示:可将nginx升级为1.20.1或者是1.21
开始干活
-
前往官网http://nginx.org/en/download.html查看对应的版本
-
由于服务器是centos,所以选择框中nginx版本下载,当时选的是nginx-1.20.1版本
-
下载完成后如何替换成了一个问题,当时想的是夜深人静的时候替换默默流下加班的泪水。后来发现到生产环境可以平滑升级
参考一:
生产环境nginx平滑升级演示
.
参考二:
nginx 的平滑升级
.
-
由于是生产环境,为了避免出现意外,还是选择在下班后开始实施。
查看nginx和OpenSSL版本
[root@host sbin]
nginx version: nginx/1.18.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module
备份原 nginx 二进制文件,切换到nginx所在目录进行备份,备份的过程系统不受影响
mv nginx nginx-1.18
将压缩包上传到服务器进行解压,上传任意位置,没有要求
tar xf nginx-1.20.1.tar.gz
切换到解压后的nginx文件夹内执行,只需要到 make,千万不要 make install 。如果make install 会将原来的配置文件覆盖
[root@host 下载]
[root@hos nginx-1.20.1]
[root@host nginx-1.20.1]
复制nginx-1.20.1下的nginx到原来的nginx目录下,注意nginx-1.20.1中nginx在objs目录下而不是在sbin下面
[root@host nginx-1.20.1]
[root@host objs]
测试是否替换成功
[root@host sbin]
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@host sbin]
nginx version: nginx/1.20.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
nginx安全漏洞(CVE-2021-23017)详细描述Nginx是美国Nginx公司的一款轻量级Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。 nginx存在安全漏洞,该漏洞源于一个离一错误在该漏洞允许远程攻击者可利用该漏洞在目标系统上执行任意代码。 受影响版本:0.6.18-1.20.0解决办法厂商补丁: 目前厂商已发布升级补丁以修复漏洞,补丁获取链接: https://www.nginx.com/blog/updating-nginx-dns-reso
# ./sbin/nginx -V
nginx version: nginx/1.20.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
configure arguments: --prefix=/home/nginx --add-module=/home/nginx-module/fastdfs-ng...
https://nginx.org/
厂商参考资料
https://mailman.nginx.org/pipermail/nginx-announce/2021/000300.html
漏洞CVE
CVE-2021-23017
CVSS评分
漏洞概述及影响
在处理DNS响应时,ngx_resolver_copy()中的一个off-by-on.
关于漏洞扫描nginx安全漏洞的修复。
服务器漏洞扫描中扫出了nginx的安全漏洞,nginx 安全漏洞(CVE-2021-23017)和NGINX 环境问题漏洞(CVE-2019-20372),受影响版本为0.6.18-1.20.0;给出解决办法为升级补丁修复,由于漏洞较多考虑平滑升级。
官方下载渠道下载1.20.0以上版本的linux。下载地址:
http://nginx.org/en/download.html
我使用的服务器是linux系统,推荐下载官网Stable version的1.22.0版
一、漏洞情况说明:
Nginx DNS解析漏洞(CVE-2021-23017):
在处理DNS响应时,ngx_resolver_copy()中的一个off-by-one错误将允许网络攻击者在堆分配的缓冲区中写入超出
边界的点字符(‘.’, 0x2E)。配置解析程序原语时,响应nginx服务器DNS请求的DNS响应可能会触发该漏洞。精心构造的数据包可以通过使用0x2E覆盖下一个堆块元数据的最低有效字节,此时,能够向nginx服务器提供DNS响应的网络攻击者可以实现拒绝服务攻击或远程代码执行攻击。
由于ngin
CVE-2021-26855的PoC-只是一个检查器-
python3 CVE - 2021 - 26855. py - u https : // mail . example . com - c example . burpcollaborator . net
# Checker for CVE-2021-26855: Exchange Server SSRF Vulnerability
# Coded by Abdullah AlZahrani https://Github.com/0xAbdullah
[ * ] You set target to https : // mail . example . com
[ #] This site is vulnerable to CVE-2021-26855 Check your collabrato
Nginx在反向代理站点的时候,通常会将一些文件进行缓存,特别是静态文件。缓存的部分存储在文件中,每个缓存文件包括“文件头”+“HTTP返回包头”+“HTTP返回包体”。如果二次请求命中了该缓存文件,则Nginx会直接将该文件中的“HTTP返回包体”返回给用户。
如果我的请求中包含Range头,Nginx将会根据我指定的start和end位置,返回指定长度的内容。而如果我构造了两个负的位置,如(-600, -9223372036854774591),将可能读取到负位置的数据。如果这次请求又命中了缓存文件,则可能就可以读取到缓存文件中位于“HTTP返回包体”前的“文件头”、“HTTP返回包头”等内容