PHP-fpm 远程代码执行漏洞(CVE-2019-11043)复现

简介

9 月 26 日,PHP 官方发布漏洞通告,其中指出:使用 Nginx + php-fpm 的服务器,在部分配置下,存在远程代码执行漏洞。而且该配置已被普遍使用,危害较大。php

漏洞概述

Nginx 上 fastcgi_split_path_info 在处理带有 %0a 的请求时,会由于遇到换行符 \n 致使 PATH_INFO 为空。而 php-fpm 在处理 PATH_INFO 为空的状况下,存在逻辑缺陷。攻击者经过精心的构造和利用,能够致使远程代码执行。html

影响版本

Nginx + php-fpm 的服务器,在使用以下配置的状况下,均可能存在远程代码执行漏洞。linux

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

不能够远程代码执行:PHP 7.0/7.1/7.2/7.3git

只适用于php7github

环境搭建

靶机centos7:https://github.com/vulhub/vulhub/tree/master/php/CVE-2019-11043golang

exp环境:kaligo语言环境docker

首先安装go环境

wget  -c https://storage.googleapis.com/golang/go1.13.3.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.13.3.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
vim 编辑/etc/profile
文件最后加上export PATH=$PATH:/usr/local/go/bin
执行 source /etc/profile 命令 就安装成功了

 而后能够直接vim

go get github.com/neex/phuip-fpizdam
或者
git clone https://github.com/neex/phuip-fpizdam
go build

启动靶机

docker-compose.yml所在目录centos

docker-compose up -d

本地pull太慢,直接用云服务器搭了一个。来复现api

漏洞复现

攻击:

 

靶机:

 

 EXP执行成功后会在靶机的/tmp目录下写入了一个a文件

 

 

 

 

注意点:

您应该注意,只有部分PHP-FPM子进程受到了污染,所以请尝试几回以执行该命令。

如vulhub上所言,只有部分的子进程受到污染,因此咱们须要多执行几回,就能够实行RCE。

 

今天看到了一个py的exp:

https://github.com/theMiddleBlue/CVE-2019-11043

相关文章
相关标签/搜索