漏洞描述
在?https://github.com/php/php-src/blob/master/sapi/fpm/fpm/fpm_main.c#L1150?中由于\n(%0a)的傳入導致nginx傳遞給php-fpm的PATH_INFO為空。
進而導致可以通過FCGI_PUTENV與PHP_VALUE相結合,修改當前的php-fpm進程中的php配置。在特殊構造的配置生效的情況下可以觸發(fā)任意代碼執(zhí)行。
注:完全復制Nginx官方給出的php-fpm示例配置的用戶不受到此漏洞影響
示例配置如下:
漏洞證明:
使用配置文件
漏洞編號
CVE-2019-11043
漏洞等級
高危
修復方案
- 修改 nginx 配置文件中fastcgi_split_path_info的正則表達式,不允許.php之后傳入不可顯字符
- 暫停使用 nginx+php-fpm 服務
- 刪除如下配置
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_param PATH_INFO?????? $fastcgi_path_info;