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

一、漏洞介绍

1、相关背景

在web早期,页面都是以静态页面为主(如:HTML),没有动态页面的说法,所有还没有动态语言(如:PHP、JSP等)
后来Ngnix为支持PHP语言就将有出现php页面的请求给PHP相关程序来进行处理,然后将处理后的结果反馈给用户。而解决PHP的相关程序就是cgi协议,有了cgi协议以后,意味着以后出现新的动态语言(如:go语言),出现了新的Web服务器,只要遵循了cgi协议,就可以快速方便的实现语言解析器和Web服务器之间的通信问题。cgi协议的改良版本有很多,但是其中一个很具有代表性的就是fast-cgi协议。
Ngnix为解决PHP问题建立了php-cgiphp-fpm来支持cgi协议
php-cgi作用:处理和解析PHP脚本程序,通过调用PHP的php_execute_script函数来解析和运行PHP脚本
php-fpm作用:可以提供进程管理的相关功能
但在PHP5.4以后,php-fpm集成了解析功能,不在需要php-cgi解析
Ngnix处理php问题用到的Fastcgi,在Nginx实际配置中,对Fastcgi的解析,需要我们进行实际的配置存在CVE-2019-11043漏洞的Nginx相关配置如下所示:

location ~ [^/]\.php(/|$) {
    fastcgi_pass  127.0.0.1:9000; //指定了FastCGI 服务器的地址
    fastcgi_index index.php; //指定默认页面
    include fastcgi_params; //引入FastCGI的各项参数
    fastcgi_split_path_info ^(.+?\.php)(/.*)$; //漏洞出现的原因部分,匹配两个字符串,第一个匹配的是(.+?\.php),第二个是(/.*)。
    fastcgi_param PATH_INFO     $fastcgi_path_info; //第二个字符串会被赋值给$fastcgi_path_info参数
    fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name; //匹配到的第一个字符串会被赋值给$fastcgi_script_name参数
}

详细解释参考:https://blog.csdn.net/weixin_40228200/article/details/128275754

2、漏洞产生原因

fastcgi_split_path_info在处理带有 %0a 的请求时,会因为遇到换行符(%0a)导致PATH_INFO为空,最终可导致任意代码执行。

3、漏洞复现

使用vulhub进行复现:https://vulhub.org/#/environments/php/CVE-2019-11043/
(1).在终端中打开vulhub文件夹进入到CVE-2019-11043目录中:cd vulhub/php/CVE-2019-11043
image.png
(2).使用命令:docker-compose build
image.png
(3).使用命令:docker-compose up -d (如果启动不起来的话是docker源的问题,换个源)
image.png
(4).查看端口:docker-compose config
image.png
(5).用浏览器访问
image.png
我们需要使用phuip-fpizdam工具来检测改漏洞
使用命令:git clone https://github.com/neex/phuip-fpizdam.git 下载
image.png
(6).进入phuip-fpizdam目录使用命令:
go env-wGOPROXY=https://goproxy.cn //需要先连接这个环境
go get -v&& go build
如果没有go命令的需要先下载go语言环境 apt install golang-go
image.png
(7).再执行命令:go run . "http://ip:8080/index.php"
image.png
我们可以在该页面中,使用参数a来传递执行的命令了
比如:pwd
image.png
由于受到php-fpm多个子进程影响,我们需要访问到php-fpm受污染的子进程才会使得上述payload执行成功,因此我们有时需要多访问几遍,才会出现相关结果。
参考:https://blog.csdn.net/weixin_40228200/article/details/128271912

posted @   tangyuan2211  阅读(225)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示