前言
上篇文章总结了APACHE中间件的常见漏洞,本文介绍一个同样很常用的中间件——nginx,本文会讲解关于nginx中间件的常见漏洞利用方式与危害,下面展开来给大家讲解。
Nginx是什么?
在讲漏洞之前我们需要先知道什么是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配置信息
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文件,成功利用漏洞:
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,漏洞利用成功。
发包后图片就会以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存在的漏洞我们也可以带入到别的中间件去分析,如果喜欢本文,希望可以一键三连支持一下。
最后
最近还整理一份JavaScript与ES的笔记,一共25个重要的知识点,对每个知识点都进行了讲解和分析。能帮你快速掌握JavaScript与ES的相关知识,提升工作效率。
有需要的小伙伴,可以点击下方卡片领取,无偿分享