漏洞描述
由于Nginx.conf的如下配置导致nginx把以’.php’结尾的文件交给fastcgi处理,为此可以构造http://liuwx.cn/test.png/.php (url结尾不一定是‘.php’,任何服务器端不存在的php文件均可,比如’a.php’),其中test.png是我们上传的包含PHP代码的照片文件。
漏洞复现环境
1 2 3 4 5 | Windows Server 2003 Nginx PhpStudy |

版本环境是:Nginx + PHP5.2

在这里我物理主机的IP是:192.168.1.101
2008虚拟机的IP是:192.168.119.134

访问:http://192.168.119.134/
环境搭建完毕!
Nginx-解析漏洞复现
一个一句话图片木马为:test.jpg,如果在URL中访问:http://www.liuwx.cn/test.jpg/.a.php会吧图片当做脚本格式解析执行!

访问:http://192.168.119.134/1.jpg

可以看到是一个正常的图片!
当在RUL后面加一个/*.php或者是/.php,就会被当做脚本文件执行!
访问:http://192.168.119.134/1.jpg/a.php

为了演示,我在hacker.jpg中添加了:
1 2 3 | <?php
phpinfo();
?>
|

访问:http://192.168.119.134/hacker.jpg是一张图片!
我们按照Nginx解析漏洞,后面加上/.php:

成功执行phpinfophp代码!

漏洞防御
1、将php.ini文件中的cgi.fix_pathinfo的值设置为1
2、将/etc/php5/fpm/pool.d/www.conf中security.limit_ectensions后面的值设置为.php










