一.背景

image.png

二.相关漏洞测试方法

🔥Nginx目录穿越漏洞

影响版本:全版本
影响说明:信息泄漏
image.png

Nginx解析漏洞:

影响版本:全版本
影响说明:命令执行,获取服务器web权限
http://127.0.0.1/test.jpg/test.php

当访问http://127.0.0.1/test.jpg时显示图片解析错误,当访问http://127.0.0.1/test.jpg/test.php时结果显示Access denied,这个回显很奇怪,正常访问这个链接是不存在的,正常思维应该是404,这里就需要研究下Nginx的解析流程了:Nginx在收到/test.jpg/test.php路径时,首先判断文件类型,发现后缀是.php,便交给php处理,但php想要解析该文件时,发现并不存在,便删除掉/test.php,去找test.jpg,此时test.jpg是存在的,便要尝试解析它,但无奈后缀是.jpg,不是php,便报错Access denied。
上面的流程中提到了一个点,就是删除/test.php,这是Nginx的“修理”机制,由参数cgi.fix_pathinfo决定,当值为1时,便进行“修理”。例如,文件名为/aa.jpg/bb.png/cc.php,如果cc.php不存在就找/aa.jpg/bb.png,如果还不存在就找aa.jpg,如果存在将它视为php文件。
到目前为止我们并没有成功利用解析漏洞,因为php代码并没有执行。为什么呢?
因为在PHP的配置中没有定义降.jpg文件中的php代码也解析为php,这是在security.limit_extensions中定义的。由于security.limit_extensions的引入,漏洞难以利用。

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

影响版本:Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7
影响说明:绕过服务器策略,上传webshell
上传一个shell.gif11,抓包后将gif后的11改为20与00,然后上传。

可以发现上传成功,此时使用http://127.0.0.1:8080/uploadfiles/shell.png[0x20][0x00].php 便可以访问phpinfo


image.png
CVE-2017-7529(Nginx越界读取缓存漏洞)

影响版本:Nginx 0.5.6 ~ 1.13.2
影响说明:信息泄漏
image.png

三.相关自动化工具💪

nginx-rce

这个工具还没有使用过哎。
NGINX-RCE下载地址

gixy

Gixy is a tool to analyze Nginx configuration. The main goal of Gixy is to prevent security misconfiguration and automate flaw detection.

Currently supported Python versions are 2.7, 3.5, 3.6 and 3.7.

Disclaimer: Gixy is well tested only on GNU/Linux, other OSs may have some issues.

https://github.com/yandex/gixy

四.参考文章

https://zhuanlan.zhihu.com/p/136801555