PHP-FPM Remote Command Execution (CVE-2019-11043)

before hack

知识

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

在使用一些有错误的Nginx配置的情况下,通过恶意构造的数据包,即可让PHP-FPM执行任意代码。

漏洞介绍

nginx + php-fpm 配置不当,当nginx配置文件中有fastcgi_split_path_info模块,在处理带%0a的请求时,对换行符\n 处置不当使得将PATH_INFO值置为空,从而导致可以通过FCGI_PUTENV与PHP_VALUE相结合,修改当前的php-fpm进程中的php配置,在特殊构造的配置生效的情况下可以触发任意代码执行。

影响范围

在 Nginx + PHP-FPM 环境下,当启用了上述 Nginx 配置后,以下 PHP 版本受本次漏洞影响,另外,PHP 5.6版本也受此漏洞影响,但目前只能 Crash,不可以远程代码执行:

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

Nginx使用如下特定配置:

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

hack it

下载攻击工具,https://github.com/neex/phuip-fpizdam

进行攻击.

访问?a=id,会看到以下结果。注意,因为php-fpm会启动多个子进程,在访问/index.php?a=id时需要多访问几次,以访问到被污染的进程

posted @ 2024-03-02 16:17  AllFalls  阅读(3)  评论(0编辑  收藏  举报