CVE-2019-11043: PHP-FPM在Nginx特定配置下任意代碼執行漏洞預警

CVE-2019-11043: PHP-FPM在Nginx特定配置下任意代碼執行漏洞預警

0x01 前言

2019年10月23日,PHP官方發佈了在 nginx 配置不當的情況下 php-fpm 可導致遠程代碼執行的漏洞。

但由於是配置文件的開放性,還請使用 nginx+php-fpm 的服務管理員/運維人員及時做好自查自檢工作。

能不能不舉報我了,總被禁言。。。我苦啊!

0x02 漏洞詳情

在 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配置。在特殊構造的配置生效的情況下可以觸發任意代碼執行。

注:完全複製Nginx官方給出的php-fpm示例配置的用戶受到此漏洞影響

示例配置如下:

PHP FastCGI Example | NGINX

0x03 漏洞證明:

CVE-2019-11043: PHP-FPM在Nginx特定配置下任意代碼執行漏洞預警

使用配置文件

CVE-2019-11043: PHP-FPM在Nginx特定配置下任意代碼執行漏洞預警

0x04 修復建議

  1. 修改 nginx 配配置文件中fastcgi_split_path_info的正則表達式,不允許.php之後傳入不可顯字符
  2. 暫停使用 nginx+php-fpm 服務
  3. 刪除如下配置
 fastcgi_split_path_info ^(.+?\\.php)(/.*)$; 

fastcgi_param PATH_INFO $fastcgi_path_info;


分享到:


相關文章: