漏洞描述
由于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
:
成功执行phpinfo
php代码!
漏洞防御
1、将php.ini
文件中的cgi.fix_pathinfo
的值设置为1
2、将/etc/php5/fpm/pool.d/www.conf
中security.limit_ectensions
后面的值设置为.php