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

漏洞介绍

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

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

漏洞复现

使用vulhub复现漏洞,进入CVE-2019-11043文件夹下(cd /home/apple/vulhub/php/CVE-2019-11043)。安装环境(docker-compose up -d),查看环境是否拉取成功,并查看端口(docker-compose ps)

访问http://{your_ip}:8080

 

 

在下载github上公开的exp之前先安装一下go环境。

获取最新的软件包源,并添加到当前的apt库

add-apt-repository ppa:longsleep/golang-backports

更新apt库

apt-get update

安装go

sudo apt-get install golang-go

查看go的环境变量

go env

重要的是需要给GOPATH设置工作空间,这里我设置的路径为/opt/go

使用命令export GOPATH=/opt/go

下载github上公开的exp

go get github.com/neex/phuip-fpizdam

之后编译

go install github.com/neex/phuip-fpizdam

进入到phuip-fpizdam,这里的具体路径是/opt/go/src/github.com/neex/phuip-fpizdam

Cd /opt/go/src/github.com/neex/phuip-fpizdam

使用exp攻击demo网站

go run . http://location:8080/index.php

如果以下提示说明exp利用成功

接下来我们给a传参

攻击成功

修复方案

临时修复:

1.在不影响业务的情况下删除nginx配置文件中的如下配置

2.在php相关的配置中加入 try_files $url=404

在这种情况下,会有nginx去检查文件是否存在,当文件不存在时,请求都不会被传递到php-fpm。

正式修复:

将php 7.1.x更新到7.1.33

将php 7.2.x更新到7.2.24

将php 7.3.x更新到7.3.11

参考连接

https://www.freebuf.com/vuls/218132.html

https://www.jianshu.com/p/afa0752efe5c

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值