【漏洞利用】CVE-2019-11043 PHP 远程代码执行漏洞

本文借鉴了FLy_鹏程万里大佬的《Kali Linux下go语言环境搭建》
链接:https://blog.csdn.net/Fly_hps/article/details/81073316
整合了一些文章作为自己的笔记,以便后续记忆学习。

0x01 背景

9 月 26 日,PHP 官方发布漏洞通告,其中指出:使用 Nginx + php-fpm 的服务器,在部分配置下,存在远程代码执行漏洞。并且该配置已被广泛使用,危害较大。

0x02 漏洞描述

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

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

0x03 影响范围

在 Nginx PHP-FPM 环境下,当启用了上述 Nginx 配置后,以下 PHP 版本受本次漏洞影响:
PHP 7.0
PHP 7.1
PHP 7.2
PHP 7.3

0x04 POC

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

该POC利用了FastCGI变量_fcgi_data_seg中的优化,该优化仅在PHP7中,所以公开的exploit仅在php7下有效,PHP5环境下需要另外的exploit才能生效。

0x05 解决方案

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

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

0x06 利用

搭建go语言环境
go下载地址:https://studygolang.com/dl下载linux版本的
1、将安装包解压缩后复制到kali linux下的/usr/local
2、修改profile文件
(1)kali控制台输入leafpad /etc/profile
在这里插入图片描述
(2)在行尾增加一行export PATH=$PATH:/usr/local/go/bin
【漏洞利用】CVE-2019-11043 PHP 远程代码执行漏洞_第1张图片
(3)kali控制台输入source /etc/profile使配置的环境变量生效
(4)kali控制台输入go version查看go版本信息表明环境配置成功

正式利用
(1)go语言编译POC代码

go get github.com/neex/phuip-fpizdam
go install github.com/neex/phuip-fpizdam

在这里插入图片描述
(2)执行上面命令后,~/go/bin目录下就会生成 phuip-fpizdam 文件
在这里插入图片描述
(3)进入目录执行攻击命令

./phuip-fpizdam http://192.168.1.1:8080/index.php

(4)结果失败了,可能环境不匹配。
在这里插入图片描述

你可能感兴趣的:(利用,漏洞复现验证)