php--fpm任意代码执行复现

本文详细介绍了PHP-FPM的CVE-2019-11043远程代码执行漏洞,包括漏洞的发现、描述、影响范围和复现步骤。在特定Nginx配置下,攻击者可以通过发送%0a字符触发漏洞。受影响的PHP版本包括7.0到7.3。修复方案涉及删除Nginx配置中的特定行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0x00:前言:

在长亭科技举办的 Real World CTF 中,国外安全研究员 Andrew Danau 在解决一道 CTF 题目时发现,向目标服务器 URL 发送 %0a 符号时,服务返回异常,疑似存在漏洞。

在使用一些有错误的Nginx配置的情况下,通过恶意构造的数据包,即可让PHP-FPM执行任意代码。

 

0x01:漏洞描述

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

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

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

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

 

0x02 影响范围

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

PHP 7.0 版本

PHP 7.1 版本

PHP 7.2 版本

PHP 7.3 版本

 

 

0x03 漏洞复现

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

sudo apt-get install docker docker-compose

sudo apt install golang

 

 

 

搭建漏洞环境

 

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

cd vulhub/php/CVE-2019-11043 && docker-compose up -d

 

 

启动环境之后 访问ip:8080/index.php 可以看到默认页面

 

安装利用工具

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

0x04漏洞利用

 

0x05 修复方式


在不影响正常业务的情况下,删除 Nginx 配置文件中的如下配置:

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

fastcgi_param PATH_INFO  $fastcgi_path_info;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值