PHuiP-FPizdaM - CVE-2019-11043漏洞利用工具
工具简介
这是一个针对php-fpm中漏洞(CVE-2019-11043)的利用工具。在特定的nginx + php-fpm配置中,该漏洞可以从外部触发。这意味着如果您的配置存在漏洞(参见下方),网站用户可能获得代码执行权限。
技术分析
虽然我们懒得写详细分析,但Orange Tsai在他的博客中发布了完美分析。同时,我在ZeroNights 2019的幻灯片也可获取。
受影响环境
如果Web服务器运行nginx + php-fpm,并且nginx具有如下配置:
|
|
同时缺少任何脚本存在性检查(如try_files),那么您可能可以使用此漏洞利用工具进行攻击。
完整前置条件列表
- Nginx + php-fpm,
location ~ [^/]\.php(/|$)必须转发到php-fpm - 必须存在通过
fastcgi_param PATH_INFO $fastcgi_path_info;语句设置的PATH_INFO变量 - 必须存在将
PATH_INFO设置为空值的方法 - 此特定漏洞利用假设在配置中
PATH_INFO在REQUEST_URI之后设置 - 没有文件存在性检查,如
try_files $uri =404或if (-f $uri) - 此漏洞利用仅适用于PHP 7+
安装与运行
使用以下命令安装:
|
|
如果遇到奇怪的编译错误,请确保使用go >= 1.13。运行程序使用phuip-fpizdam [url]。
测试环境搭建
使用Docker
- 克隆此仓库并进入
reproducer目录 - 创建docker镜像:
docker build -t reproduce-cve-2019-11043 . - 运行docker:
docker run --rm -ti -p 8080:80 reproduce-cve-2019-11043 - 现在您拥有http://127.0.0.1:8080/script.php,这是一个空文件
- 运行漏洞利用工具:
phuip-fpizdam http://127.0.0.1:8080/script.php
关于PHP5
php-fpm中的缓冲区下溢在PHP 5版本中存在。但是,此漏洞利用利用了用于存储FastCGI变量的优化_fcgi_data_seg,该优化仅存在于php 7中。
许可证
此漏洞利用工具根据MIT许可证分发。