2019-10-25php-fpm (CVE-2019-11043)漏洞复现

php-fpm (CVE-2019-11043)漏洞复现

编写者:thelostworld_fv

漏洞详情

来自Wallarm的安全研究员Andrew Danau在9月14号至16号举办的Real World CTF中,向服务器发送%0a(换行符)时,服务器返回异常信息,疑似存在漏洞。

当Nginx使用特定的fastcgi配置时,存在远程代码执行漏洞,但这个配置并非Nginx默认配置。

当fastcgi_split_path_info字段被配置为 ^(.+?\.php)(/.*)$;时,攻击者可以通过精心构造的payload,造成远程代码执行漏洞,该配置已被广泛使用,危害较大

影响版本

当Nginx + php-fpm 的服务器有如下配置时,存在此漏洞。

location ~ [^/]\.php(/|$) {

fastcgi_split_path_info ^(.+?\.php)(/.*)$; 

fastcgi_param PATH_INFO      $fastcgi_path_info; 

fastcgi_pass  php:9000; 

...

}

实验环境

docker环境 https://github.com/vulhub/vulhub/tree/master/php/CVE-2019-11043

docker-compose up -d

docker镜像下载完成

环境准备好了:》

利用的工具:

https://github.com/neex/phuip-fpizdam

克隆到本地

git clone https://github.com/neex/phuip-fpizdam.git

编译利用工具

没有go环境

安装go环境

wget  -c https://storage.googleapis.com/golang/go1.13.3.linux-amd64.tar.gz

解压到/usr/local

目录tar -C /usr/local/ -xzf go1.13.3.linux-amd64.tar.gz

vim 编辑/etc/profile

文件最后加上export PATH=$PATH:/usr/local/go/bin

执行 source /etc/profile 命令 就安装成功了

获取工具

执行exp攻击 在/tmp/写入 文件a

攻击成功后会在tmp目录下写入a

winddows下面也是类似的。

修复建议:

1.修改nginx配置文件中fastcgi_split_path_info的正则表达式,不允许.php之后传入不可显字符

2.暂停使用 nginx+php-fpm 服务

根据实际生产环境的业务需求,将以下配置删除

fastcgi_split_path_info ^(.+?\.php)(/.*)$;

fastcgi_param PATH_INFO  $fastcgi_path_info;

总结:

1、docker环境相对实现容易一些(Linux本机尝试构造漏洞,但是花的时间很多,建议docker)。

2、还有就是go语言下载的phuip-fpizdam注意最后编译后的位置(本机在此目录下)

3、最近工作闲暇漏洞复现一下(安全贵在坚持),如果有纰漏,望大佬指正。

参考:

https://mp.weixin.qq.com/s/pnuMJ8x6k_r2lmgId93Cuw

https://mp.weixin.qq.com/s/NFPVPSUHJKr4ghfa0ofoWQ

https://mp.weixin.qq.com/s/kE4nP8sewd7OnJ0WUDw3iA


个人:https://www.jianshu.com/u/bf0e38a8d400

个人知乎:https://www.zhihu.com/people/fu-wei-43-69/columns

你可能感兴趣的:(2019-10-25php-fpm (CVE-2019-11043)漏洞复现)