Nginx不安全配置可能导致的安全漏洞

服务器 漏洞
Nginx (engine x) 是一个高性能的http和反向服务器,也可以作为IMAP/POP3/SMTP服务器。t engine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。

 前言:

Nginx (engine x) 是一个高性能的http和反向服务器,也可以作为IMAP/POP3/SMTP服务器。t engine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。

在渗透测试过程中发现很多网站使用了nginx或者tenginx来做反向代理,ningx的配置文件nginx.conf的一些错误配置可能引发一些安全漏洞。下面是总结的一些可能引发安全问题的错误配置,并且推荐了github上一款用于检测nginx安全配置的工具。

Ningx.conf配置一共分为4部分:1.顶级配置2.Events 模块3.http部分 4.server部分

[[218410]]

0×00任意文件读取

这个常见于Nginx做反向代理的情况,动态的部分被proxy_pass传递给后端端口,而静态文件需要Nginx来处理。假设静态文件存储在/home/目录下,而该目录在url中名字为files,那么就需要用alias设置目录的别名:

  1. location /files {  
  2.     alias /home/; 

此时访问http://127.0.0.1:8080/files/1.txt,就可以获取/home/1.txt 文件。

我们发现,url上/files没有加后缀/ ,而alias设置的/home/是有后缀/的,这个 /就导致我们可以从/home/目录穿越到他的上层目录,造成任意文件下载:

修复方法:不写成上面那种有漏洞的形式,比如可以写成结尾都带着/字符。

0×01$uri导致的CRLF注入

在实际业务场景中经常需要在nginx中配置路径跳转。

比如用户访问http://x.com   自动跳转到https://x.com 或者是访问   http://x.com  自动跳转到  http://www.x.com

在跳转的过程中,我们需要保证用户访问的页面不变,所以需要从Nginx获取用户请求的文件路径,有三个可以表示uri的变量:

  1. $uri  
  2. $document_uri  
  3. $request_uri 

$uri 和  $document_uri表示的是解码以后的请求路径,不带参数,$request_uri表示的是完整的URI(没有解码),如果在nginx.conf中配置了下列的代码:

  1. location /test {  
  2.              return 302 http://$host:81$uri; 
  3.                  } 

因为$uri是解码以后的请求路径,所以可能就会包含换行符,也就造成了一个CRLF注入漏洞。

该漏洞除了发生在  return后面,也可能发生在rewrite、add_header、p roxy_set_header、proxy_pass之后。

修复方式:将$uri或者$document_uri改为 $request_uri。

0×02 SSRF

SSRF(服务端请求伪造)漏洞常出现在反向代理的配置中,反向代理的语法如下:proxy_pass http ://IP

如果攻击者可以操控IP, 将其修改成内网IP地址即可造成SSRF漏洞。

0×03目录遍历

autoindex off;#是否开启目录列表访问,默认关闭。

若设置成autoindex on;

 

Nginx不安全配置可能导致的安全漏洞Nginx不安全配置可能导致的安全漏洞 

Nginx不安全配置可能导致的安全漏洞

0x04nginx版本泄露

对于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.jpg%00x.php

因此隐藏 Nginx 的版本号,提高安全性。

在配置文件nginx.conf里面,设置如下:server_tokens off;

Nginx配置安全检查的工具

Github上开源了一款Nginx配置安全检查的工具,叫做gixy,可以覆盖以上的部分问题。

项目地址: https://github.com/yandex/gixy

工具是用python编写的,python2.7和3.5+版本都支持。可以直接用pip来安装:pip install gixy。

使用起来也很简单,直接将 gixy 命令后面加上 ningx.conf 文件的具体位置即可。

 

责任编辑:武晓燕 来源: FreeBuf
相关推荐

2014-04-09 09:37:29

2023-03-21 18:35:14

漏洞信息泄露

2015-07-01 14:48:51

2012-10-19 13:37:08

2017-10-18 11:21:43

2012-04-16 10:12:54

Java线程

2022-04-06 21:32:07

安全漏洞网络安全IT

2023-09-08 00:12:40

2017-02-06 11:08:15

2023-06-01 19:24:16

2023-01-05 11:13:03

2014-09-12 17:44:23

2011-12-28 11:05:12

2009-11-02 12:50:09

2009-08-03 16:58:59

C#不安全代码

2024-01-19 08:42:45

Java线程字符串

2011-04-13 16:09:17

2014-06-03 09:23:41

2020-04-22 20:35:02

HashMap线程安全

2021-04-04 23:16:52

安全刷脸银行
点赞
收藏

51CTO技术栈公众号