vulhub-php_cve-2019-11043

漏洞成因:
如果服务器是nginx + php-fpm这种配置,并且有类似如下的配置(目前漏洞利用php的版本在7以上,而其以前的版本也有漏洞但没有利用):

location ~ [^/]\.php(/|$) { #正则表达式,用于匹配uri
 ...
 fastcgi_split_path_info ^(.+?\.php)(/.*)$; #Nginx默认获取不到PATH_INFO的值,得通过fastcgi_split_path_info指定定义的正则表达式来给$fastcgi_path_info赋值
 fastcgi_param PATH_INFO $fastcgi_path_info; #设置一个传递给FastCGI服务的参数,可以是文本或者是变量。这里就是设置了PATH_INFO
 fastcgi_pass   php:9000;
 ...
}

fastcgi_split_path_info ^(.+?.php)(/.*)$;关键在于这个配置,只要是这样配置了就存在远程代码执行的漏洞。

因为“fpm_main.c”文件的第1150行代码中由于\n(%0a)的传入导致nginx传递给php-fpm的PATH_INFO为空。
https://github.com/php/php-src/blob/master/sapi/fpm/fpm/fpm_main.c#L1150
进而导致可以通过FCGI_PUTENV与PHP_VALUE相结合,修改当前的php-fpm进程中的php配置。在特殊构造的配置生效的情况下可以触发任意代码执行。

转载于:添加链接描述

这里是uri与url的区别
PATH_INFO的详细解释

漏洞的利用:
去这里下载exp:https://github.com/neex/phuip-fpizdam.git
然后 go build一下
再 ./phuip-fpizdam+要攻击的网站就可以了
vulhub-php_cve-2019-11043_第1张图片
还可以使用netcat来反弹shell,我太菜了,没有实现,可能是我用的花生壳进行内网穿透的缘故

你可能感兴趣的:(vulhub-php_cve-2019-11043)