社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  NGINX

php-fpm在nginx特定环境下的任意代码执行漏洞(CVE-2019-11043)

渗透云笔记 • 5 年前 • 555 次点击  

目录

0x01 漏洞介绍

0x02 漏洞影响

0x03 漏洞复现

 

0x01 漏洞介绍

在长亭科技举办的 Real World CTF 中,国外安全研究员 Andrew Danau 在解决一道 CTF 题目时发现,向目标服务器 URL 发送%0a符号时,服务返回异常,疑似存在漏洞。

 

在nginx上,fastcgi_split_path_info处理带有%0a的请求时,会因为遇到换行符\n,导致PATH_INFO为空,而在php-fpm对PATH_INFO进行处理时,对其值为空时的处理存在逻辑问题,从而导致远程代码执行漏洞

 

fpm_main.c文件的第1150行代码可以很明显的看出来,问题的所在

https://github.com/php/php-src/blob/master/sapi/fpm/fpm/fpm_main.c#L1150



0x02 漏洞影响

服务器环境为nginx + php-fpm,并且nginx的配置像下面这样

location ~ [^/]\.php(/|$) {  ... fastcgi_split_path_info ^(.+?\.php)(/.*)$; fastcgi_param PATH_INFO      $fastcgi_path_info; fastcgi_pass   php:9000;  ...}

 

另外,PHP 5.6版本也受此漏洞影响,但目前只能 Crash,不可以远程代码执行:

PHP 7.0 版本PHP 7.1 版本PHP 7.2 版本PHP 7.3 版本


 

如果使用了nginx官方提供的默认配置,将会收到影响

https://www.nginx.com/resources/wiki/start/topics/examples/phpfcgi/

 

0x03 漏洞复现

vulhub上已经有了可以利用的漏洞环境,直接pull下来进行复现即可

使用的exp是国外研究员的go版本的

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

 

自己去pull环境就可以了

 

完后就是复现操作

访问http://your-ip:8080/index.php

 

然后我们使用vulhub中使用的go版本的exp

先安装golang环境

 

然后将exp部署到本地并利用

 

成功利用

 

这里还需要注意一下,由于只有部分php-fpm子进程受到了污染,所以请多执行几次命令



Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/49432
 
555 次点击