专栏首页安全漏洞环境学习CVE-2019-11043PHP-FPM在Nginx特定配置下远程代码执行漏洞复现

CVE-2019-11043PHP-FPM在Nginx特定配置下远程代码执行漏洞复现

0x01:漏洞概述

9月26日,PHP官方发布漏洞通告,提到Nginx与php-fpm服务器上存在的一处高危漏洞,由于Nginx的fastcgi_split_path_info模块在处理带 %0a 的请求时,对换行符 \n 处置不当使得将PATH_INFO值置为空,从而导致可以通过FCGI_PUTENV与PHP_VALUE相结合,修改当前的php-fpm进程中的php配置。在特殊构造的配置生效的情况下可以触发任意代码执行。目前开源社区已有漏洞Poc公开。

漏洞信息

漏洞名称 PHP-FPM在Nginx特定配置下远程代码执行

CVE编号CVE-2019-11043

CNVD编号 -

影响版本 参考影响范围

威胁等级 高危

公开时间 2019年9月26日

影响范围

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

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

0x02,环境准备

环境下载:

https://github.com/vulhub/vulhub/tree/master/php/CVE-2019-11043

启动环境

mkdir Andrew

cd Andrew

docker-compose up –d

docker ps

进入nginx中,创建文件

Docker exec –it f2e659d78e37 /bin/bash

访问地址http://192.168.157.128:8080/index.php

0x03,漏洞复现

下载 phuip-fpizdam,编译

https://github.com/neex/phuip-fpizdam

kali安装go教程:https://studygolang.com/articles/11279

漏洞攻击(这里我用的编译好的)

在浏览器中访问:http://192.168.157.128:8080/index.php?a=id

也可进行无害的漏洞检测,命令如下:

phuip-fpizdam http://192.168.157.128:8080/index.php--skip-attack

0x04,漏洞分析

PHP-FPM(PHP FastCGI Process Manager)意:PHP FastCGI进程管理器,用于管理PHP 进程池的软件,用于接受web服务器的请求。

nginx与php-fpm结合的处理流程

打开php-fpm.conf文件,我们看到如下配置:

即:php-fpm模块监听127.0.0.1:9000端口,等待请求到来去处理。

处理过程:

漏洞触发点

因为“fpm_main.c”文件的第1150行代码中由于\n(%0a)的传入导致nginx传递给php-fpm的PATH_INFO为空。

https://github.com/php/php-src/blob/master/sapi/fpm/fpm/fpm_main.c#L1150

进而导致可以通过FCGI_PUTENV与PHP_VALUE相结合,修改当前的php-fpm进程中的php配置。在特殊构造的配置生效的情况下可以触发任意代码执行。

此漏洞利用的先决条件:

1. php需要开启FPM模块,该模块在php虽然在PHP5.3.3之后已经加入php核心代码但是的PHP的发行版默认不安装php-fpm模块,所有默认的用户不受影响;要想php支持php-fpm,只需要在编译php源码的时候带上--enable-fpm;

2. 需要修改/nginx/conf/nginx.conf配置;

0x05,修复意见

  • 修改nginx配置文件中fastcgi_split_path_info的正则表达式,不允许.php之后传入不可显字符。
  • 暂停使用nginx+php-fpm 服务
  • 根据自己实际生产环境的业务需求,将以下配置删除

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

fastcgi_param PATH_INFO $fastcgi_path_info;

本文分享自微信公众号 - 安全漏洞环境学习(gh_ddd854e535b8),作者:lhx

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Metinfo6.0.0-6.1.3多个CVE漏洞复现

    2018年12月27日,Metinfo被爆出存在存储型跨站脚本漏洞,远程攻击者无需登录可插入恶意代码,管理员在后台管理时即可触发。该XSS漏洞引起的原因是变量覆...

    墙角睡大觉
  • CVE-2018-20434 LibreNMS 1.46 - 'addhost' RCE漏洞复现

    LibreNMS是一款基于PHP/MySQL/SNMP的自动发现的网络监控系统,其中包括对广泛的网络硬件和操作系统的支持,包括Cisco,Linux,FreeB...

    墙角睡大觉
  • CVE-2018-20129-DedeCMS V5.7 SP2前台文件上传漏洞复现

    DedeCMS 5.7 SP2版本中的uploads/include/dialog/select_images_post.php文件存在文件上传漏洞,远程攻击者...

    墙角睡大觉
  • PHP:CentOS7部署PHP5.4项目

    新码农
  • windows 安装 Apache、php、mysql及其配置(转载)

    此文包括的注意内容:软件版本及下载地址 Apache2.4的配置和安装 php7.0的配置 mysql5.5的安装 常见问题及解决方法 1.软件版本 Windo...

    lin_zone
  • laravel5.3的新功能尝鲜

    上一节课 https://my.oschina.net/lilugirl2005/blog/783370

    lilugirl
  • PHP7 配置详解

    本文简要介绍了 PHP 常用配置。 PHP-FPM 后台执行 daemonize = yes 忽略配置文件,通过命令方式指定后台或前台运行。 $ sudo ph...

    康怀帅
  • 网站安全检测提示“页面异常导致本地路径泄漏”的解决办法

    在 360 网站安全检测时,经常报出“页面异常导致本地路径泄漏”的漏洞,尤其是新安装的 WordPress 网站,那是必然会报。。。 这些漏洞,之前玛思阁就已经...

    张戈
  • Ubuntu 16.04 下 Typecho 部署

    站点购买的时候腾讯只送了 20G 云盘,当我购买第二款机器的时候额度提升到了 50G。加上机器当时使用的是 Ubuntu 14.04 而且使用的是 HTTP 协...

    BigNerdCoding
  • 解决tp5在nginx下修改配置访问的问题

    根据自己的nginx配置,找到正确的fastcgi.conf,修改fastcgi_param参数

    砸漏

扫码关注云+社区

领取腾讯云代金券