首先这个漏洞不是软件或代码的问题,是认为疏忽造成的。
一、环境搭建
从vulhub上面下载vulhub-master.zip文件,上传到服务器中,或者直接在服务器下载。
unzip vulhub-master.zip
进入漏洞目录
cd /vulhub-master/vulhub-master/nginx/nginx_parsing_vulnerability
在当前目录下执行,拉取镜像
docker compose up -d
二、访问漏洞
虚拟机ip为192.168.87.87
http://192.168.87.87/uploadfiles/nginx.png
访问:
http://192.168.87.87/uploadfiles/nginx.png/.php
原因就是在第一个url后面增加了.php后缀,导致被解析
正常解析的页面
三、漏洞利用的源码查看
下载网页的图片查看发现:坏人将图片的最后加入了<?=phpinfo()?>的结尾,导致后端解析这个图片
为什么能解析呢?
cd /vulhub-master/vulhub-master/nginx/nginx_parsing_vulnerability/php-fpm
vim www-2.conf
查看配置文件发现,security后面的参数是空
security.limit_extensions
是 PHP 配置文件php.ini
中的一个选项,用于限制在 Web 服务器上执行的 PHP 脚本的文件扩展名。该选项的值是一个字符串,指定允许执行的文件扩展名列表。默认情况下,它的值为空,表示不限制文件扩展名。
通过设置
security.limit_extensions
,可以提高服务器的安全性,限制可执行的 PHP 脚本文件的范围。这可以防止恶意用户上传和执行具有危险扩展名的文件,从而减少潜在的安全风险。例如,如果您将
security.limit_extensions
设置为.php
,则只有扩展名为.php
的文件才能被执行,其他扩展名的文件将会被拒绝执行。
这个值默认是有的,只要不要刻意更改,不会出现此漏洞的。