标签 - 复现

? CVE-2019-11043 ? ? RCE ? ? 复现 ? ? Nextcloud ?    2020-01-10 17:22:10    13950    0    0

漏洞描述

CVE-2019-11043 是一个远程代码执行漏洞,使用某些特定配置的 Nginx + PHP-FPM 的服务器存在漏洞,可允许攻击者远程执行代码。

向Nginx + PHP-FPM的服务器 URL发送 %0a 时,服务器返回异常。

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

  1. location ~ [^/]\.php(/|$) {
  2. ...
  3. fastcgi_split_path_info ^(.+?\.php)(/.*)$;
  4. fastcgi_param PATH_INFO $fastcgi_path_info;
  5. fastcgi_pass php:9000;
  6. ...
  7. }

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

影响范围

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

  • PHP 7.0 版本
  • PHP 7.1 版本
  • PHP 7.2 版本
  • PHP 7.3 版本

漏洞复现

使用 p 牛的 docker 环境进行复现:

PHP-FPM 远程代码执行漏洞(CVE-2019-11043)

准备工作:安装 docker、golang 环境

  1. sudo apt-get install docker docker-compose
  2. sudo apt install golang

搭建漏洞环境

  1. git clone https://github.com/vulhub/vulhub.git
  2. cd vulhub/php/CVE-2019-11043 && docker-compose up -d

title

启动环境之后,就可以看到漏洞环境的默认页面。在此为 http://127.0.0.1:8080/index.php

title

安装漏洞利用工具

  1. git clone https://github.com