中间件安全-nginx篇


前言

Nginx 是一款轻量级Web 服务器、 反向代理服务器及电子邮件(IMAP/POP3)代理服务器。

其特点是 占有内存少并发能力强(来自百度)

Nginx解析漏洞

该漏洞与nginx和php的版本无关属于用户配置错误的漏洞。如下是phpstudy2018版本中的nginx配置,也是存在问题的。

上传一个正常的jpg图片,然后访问的时候加上/.php就会以php的形式执行。

Nginx 文件名逻辑漏洞(CVE-2013-4547)

复现参考:https://vulhub.org/#/environments/nginx/CVE-2013-4547/

影响版本:Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7,范围还是比较广的。

其漏洞产生的主要原因在错误地解析了请求的URI,错误地获取到用户请求的文件名,导致出现权限绕过、代码执行的连带影响。

举个例子,比如,Nginx匹配到.php结尾的请求,就发送给fastcgi进行解析,常见的写法如下:

location ~ \.php$ {
    include        fastcgi_params;

    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  /var/www/html$fastcgi_script_name;
    fastcgi_param  DOCUMENT_ROOT /var/www/html;
}

正常情况下(关闭pathinfo的情况下),只有.php后缀的文件才会被发送给fastcgi解析。而存在CVE-2013-4547的情况下,我们请求 1.gif[0x20][0x00].php ,这个URI可以匹配上正则 .php$,可以进入这个Location块;但进入后,由于fastcgi在查找文件时被\0截断,Nginx却错误地认为请求的文件是1.gif[0x20],就设置其为SCRIPT_FILENAME的值发送给fastcgi。fastcgi根据SCRIPT_FILENAME的值进行解析,最后造成了解析漏洞。

所以,我们只需要上传一个空格结尾的文件,即可使PHP解析之。

漏洞复现

docker搭建一个nginx的上传页面,上传使用黑名单的形式。上传一个含有恶意代码的图片马,注意在后面添加一个空格可以上传成功

但是我们正常是无法是访问到该图片的,所以我要构造test.jpg[0x20][0x00].php的形式使nginx将其当作php文件进行解析。

首先访问该图片文件在后面添加两个空格.php进行标志

然后在hex上修改20为00,repeate发包即可成功解析为php文件。

其他的一些漏洞

Nginx 配置错误导致漏洞三则

Node.js 目录穿越漏洞(CVE-2017-14849

Nginx越界读取缓存漏洞(CVE-2017-7529


文章作者: EASY
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 EASY !
 上一篇
中间件安全-tomacat篇 中间件安全-tomacat篇
前言Tomcat 是一个开源的轻量级Web 应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。 实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当运行tomcat
2020-08-05 EASY
下一篇 
中间件安全-apache篇 中间件安全-apache篇
前言Apache 是世界使用排名第一的 Web 服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的 Web 服务器端软件之一。 Apache解析漏洞Apache 默认一个文件可以有多个以点分隔
2020-08-04 EASY
  目录