PHP-FPM Fastcgi 未授权访问漏洞 漏洞原理 Fastcgi Fastcgi是一个通信协议,和HTTP协议一样,都是进行数据交换的一个通道。HTTP协议是浏览器和服务器中间件进行数据交换的协议,浏览器将HTTP头和HTTP体用某个规则组装成数据包,以TCP的方式发送到服务器中间件,服务器中间件按照规则将数据包解码,并按要求拿到用户需要的数...
PHP-FPM工作时,默认监听9000端口,用于接收Web服务器发送过来的FastCGI协议数据。而当我们能够通过任意方式访问到PHP-FPM的9000端口时,就可以构造数据包通过给SCRIPT_FILENAME赋值,达到执行任意PHP文件的目的了。但是由于FPM某版本后配置文件添加了security.limit_extensions选项,用于指定解析文件的后缀,并且默认值为.php,这...
另外,也有少部分发行版安装中 security.limit_extensions 默认为空,此时就没有任何限制了。 由于这个配置项的限制,如果想利用PHP-FPM的未授权访问漏洞,首先就得找到一个已存在的PHP文件。 万幸的是,通常使用源安装php的时候,服务器上都会附带一些php后缀的文件,我们使用 find / -name "*.php" 来全局搜索一下默认...
fastcgi php-fpm 端口对外开放 外部提交的命令可以执行 https://github.com/adoy/PHP-FastCGI-Client local/php/bin/php fcgiget.php 222.134.66.98:9000/etc/hosts
写到这里,PHP-FPM未授权访问漏洞也就呼之欲出了。PHP-FPM默认监听9000端口,如果这个端口暴露在公网,则我们可以自己构造fastcgi协议,和fpm进行通信。 此时,SCRIPT_FILENAME的值就格外重要了。因为fpm是根据这个值来执行php文件的,如果这个文件不存在,fpm会直接返回404: ...
PHP-FPM 未授权访问漏洞 前文我们讲到,攻击者可以通过PHP_VALUE和PHP_ADMIN_VALUE这两个环境变量设置 PHP 配置选项auto_prepend_file和allow_url_include,从而使 PHP-FPM 执行我们提供的任意代码,造成任意代码执行。除此之外,由于 PHP-FPM 和 Web 服务器中间件是通过网络进行沟通的,因此目前越来越多的集群将 PHP...
PHP-FPM Fastcgi 未授权访问漏洞 介绍:PHP-FPM(FastCGI进程管理器) 待补充
https://www.anquanke.com/post/id/197745#h3-5 PHP 突破 disable_functions 常用姿势以及使用 Fuzz 挖掘含内部系统调用的函数https://www.leavesongs.com/PENETRATION/fastcgi-and-php-fpm.html Fastcgi协议分析 && PHP-FPM未授权访问漏洞 && Exp编写 ...
详见https://www.leavesongs.com/PENETRATION/fastcgi-and-php-fpm.html。 测试环境搭建 直接执行docker-compose up -d即可运行测试环境,环境监听9000端口。 EXP Exp见 https://gist.github.com/phith0n/9615e2420f31048f7e30f3937356cf75 点击查看代码 import socket import random import argparse import sys ...