CVE-2019-11043 Nginx PHP 远程代码执行漏洞复现
漏洞简介:
来自Wallarm的安全研究员Andrew Danau在9月14-16号举办的Real World CTF中,意外的向服务器发送%0a(换行符)时,服务器返回异常信息。由此发现了这个0day漏洞,9月26日,PHP官方发布漏洞通告,其中指出,使用Nginx+php-fpm的服务器,在部分配置下,存在远程代码执行漏洞。并且该配置已被广泛使用,危害较大
漏洞概述:
Nginx上fastcgi_split_path_info在处理带有%0a的请求时,会因为遇到换行符\n导致PATH_INFO为空。而php-fpm在处理PATH_INFO为空的情况下,存在逻辑缺陷,攻击者通过精心构造和利用,可以导致远程代码执行。
漏洞影响版本:
Nginx+php-fpm的服务器,在使用如下配置的情况下,都有可能存在远程代码执行的漏洞
location ~ [^/]\.php(/|$) {
...
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass php:9000;
...
}
漏洞复现:
使用vulhub启动环境:
github下载漏洞环境
git clone https://github.com/vulhub/vuhub/tree/master/php/CVE-2019-111043
POC下载:https://github.com/neex/phuip-fpizdam
POC需要go语言编译,需要go语言环境(linux下go语言安装)
漏洞启动后,访问http://yuo ip:8080/index.php即可查看到一个默认页面
现在编译POC,进入下载好的poc文件夹内,执行go build进行编译,编译好后,文件内出现phuip-fpizdam可执行文件
如果编译失败,显示timeout,则需要设置代理,执行以下语句添加环境变量:
export GOPROXY=https://goproxy.io
使用编译好的工具,发送数据包:
这里已经成功执行,访问http://ip:8080/index.php?a=whoami 即可查看到命令已经成功执行。
注意:因为php-fpm会启动多个子进程,在访问index.php?a=id时需要多访问几次,以访问被污染的进程
漏洞修复方式:
1.在不影响正常业务的情况下,删除Nginx配置文件中如下配置:
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_paramPATH_INFO $fastcgi_path_info;
2.官网下载最新补丁
上一篇: python_web应用雏型
下一篇: 89. 格雷编码
推荐阅读
-
Windows CVE-2019-0708 远程桌面代码执行漏洞复现
-
「漏洞预警」Apache Flink 任意 Jar 包上传导致远程代码执行漏洞复现
-
PHP远程代码执行漏洞分析(CVE2019-11043)
-
Ngnix PHP-FPM 远程代码执行漏洞复现(CVE-2019-11043)
-
Apache Tomcat 远程代码执行漏洞(CVE-2019-0232)漏洞复现
-
CVE-2019-11043 Nginx PHP 远程代码执行漏洞复现
-
(CVE-2020-1938)Apache Tomcat远程代码执行漏洞复现
-
cve-2017-12617 tomcat远程代码执行漏洞复现测试
-
Kibana远程代码执行漏洞(CVE-2019-7609)复现
-
CVE-2019-7609:Kibana远程代码执行漏洞复现