深入浅出带你学习Nginx中间件常见漏洞

本文正在参加「金石计划 . 瓜分6万现金大奖」

前言

上篇文章总结了APACHE中间件的常见漏洞,本文介绍一个同样很常用的中间件——nginx,本文会讲解关于nginx中间件的常见漏洞利用方式与危害,下面展开来给大家讲解。

Nginx是什么?

图片.png

在讲漏洞之前我们需要先知道什么是nginx,简单来说Nginx是一款轻量的WEB 服务器/反向代理服务器及邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,而且nginx的并发能力在同类型的网页服务器中表现较好。根据其特点经常被用于轻量级网站开发,故而有很多关于它的漏洞。

Nginx配置文件错误导致的解析漏洞

关于由于配置文件错误导致的解析漏洞前文已经给大家讲过了,但Nginx也存在解析漏洞,其利用方法与之前中间件漏洞的方法大体一致,具体为对于任意文件名,在后面添加/xxx.php,即可将文件作为php解析,比如我们建立下面一个文件:

xino.jpg/xxx.php

当我们上传后,服务器会将xino.jpg以php解析从而达到执行php命令的目的。

下面通过实例给大家验证,假如现在有一个存在该漏洞的网站,存在一个图片的上传点,但不能上传php文件,我们在其上传点上传符合漏洞利用特征的文件:

xino.png/a.php

文件内容为查看php配置信息,上传成功后访问上传文件的路径,发现文件被解析成为了php语言,成功回显了php配置信息

图片.png

Nginx 空字节任意代码执行漏洞

空字节顾名思义就是为空的字节,经常以%00来表示空字节,该漏洞就是我们可以在图片中嵌入PHP代码然后通过访问xxx.jpg%00.php来执行其中的代码,大致影响范围为:

nginx 0.5.*

nginx 0.6.*

nginx 0.7 <= 0.7.65

nginx 0.8 <= 0.8.37

我们还是用实例来讲解,首先建立一个1.jpg文件,同时在jpg里面添加内容:

<?php phpinfo(); ?>

上传文件后我们进行抓包,修改上传文件名为:

1.jpg%00.php

发包后发现图片文件被解析成为了php文件,成功利用漏洞:

图片.png

CVE-2013-4547

该漏洞可以简述为文件名逻辑漏洞,影响版本如下:

Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7

具体解释就是假如我们上传了一个图片文件,但我们想让它作为php解析,于是抓包1.png.php,用在.php前用空格和零截断,需要我们注意的是需要从hex出编码处修改,20代表空格 00代表 \0,漏洞利用成功。

图片.png

发包后图片就会以php文件来解析了,我们的漏洞也就成功复现了。

Nginx 配置错误导致的安全问题

由于配置问题导致的安全问题就太多了,不同地方配置时均可能产生安全问题,比如路径配置不好可能会造成目录遍历,下面举一些简单的例子:

server {
listen 80 default_server;
server_name _;
location /static {
alias /usr/share/nginx/static/;
}
location /api {
proxy_pass http://apiserver/v1/;
}
}

上面的代码就有可能造成目录遍历,简单分析一下,可以发现在拼接时alias前面缺少一个反斜杠,这个就会导致访问上层目录,这一个小点就会导致存在目录遍历漏洞,可以看到nginx中配置东西还是需要严谨的,一点小差错就会导致漏洞。

结语

本文总结了一下中间件nginx在中间件常见的漏洞,当然只是一小部分,总结一下NGINX主要还是围绕解析漏洞来展开,对于NGINX存在的漏洞我们也可以带入到别的中间件去分析,如果喜欢本文,希望可以一键三连支持一下。

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容