在长亭科技举办的 Real World CTF 中,国外安全研究员 Andrew Danau 在解决一道 CTF 题目时发现,向目标服务器 URL 发送 %0a 符号时,服务返回异常,疑似存在漏洞。
在使用一些如下的Nginx配置的情况下,通过恶意构造的数据包,即可让PHP-FPM执行任意代码。
location ~ [^/]\.php(/|$) { fastcgi_split_path_info ^(.+?\.php)(/.*)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_pass php:9000; ... }}
php官方公告
https://bugs.php.net/bug.php?id=78599
漏洞复现教程
https://github.com/vulhub/vulhub/blob/master/php/CVE-2019-11043/README.md
漏洞exp
https://github.com/neex/phuip-fpizdam
php官方关于影响范围的描述
我的漏洞利用程序可在所有7+版本上使用,但自编写上述代码以来,似乎存在核心问题。即使在php 5.6上,我也能够重现崩溃。有关更多详细信息:根据git blame的说法,错误地假设env_path_info不为空的代码是在2013年编写的。这意味着几乎所有版本中都存在单个字节的越界读取和越界写入。但是,我的漏洞利用了_fcgi_data_seg结构的存在和相关的哈希表优化。从7.0开始。因此7.1、7.2和7.3都有问题和方法利用(在第一条消息中进行了描述)。