PHP-CGI远程代码执行

本文探讨了PHP的SAPI(服务器应用编程接口)及其运行模式,重点关注PHP-CGI的作用。介绍了CGI和FastCGI的区别,以及PHP-CGI如何在两者间切换。文章还提到了PHP-FPM作为更高效的FastCGI管理器的出现,并详细讨论了CVE-2012-1823漏洞,这是一个影响以CGI模式运行的PHP的漏洞,利用了RFC3875中的规定,允许通过querystring进行代码执行。
摘要由CSDN通过智能技术生成

PHP SAPI 与运行模式

在 PHP 源码中,有一个目录叫 sapi。sapi 在 PHP 中的作用,类似一个消息的“传递者”,(PHP-FPM中的fpm,其作用就是接受 web 容器通过 fastcgi 协议封装好的数据,交给PHP解释器执行;除了fpm,最常见的sapi应该是用于 Apache 的 mod_php,这个sapi用于 php 和 apache 之间的数据交换。)

  php-cgi 也是一个 sapi。在远古的时候,web 应用的运行方式很简单,web 容器接收到 http 数据包后,拿到用户请求的文件(cgi 脚本),并 fork 出一个子进程(解释器)去执行这个文件,然后拿到执行结果,直接返回给用户,同时这个解释器子进程也就结束了。基于 bash、perl 等语言的 web 应用多半都是以这种方式来执行,这种执行方式一般就被称为cgi,在安装 Apache 的时候默认有一个 cgi-bin 目录,最早就是放置这些 cgi 脚本用的。

  但 cgi 模式有个致命的缺点,众所周知,进程的创建和调度都是有一定消耗的,而且进程的数量也不是无限的。所以,基于 cgi 模式运行的网站通常不能同时接受大量请求,否则每个请求生成一个子进程,就有可能把服务器挤爆。于是后来就有了 fastcgi,fastcgi 进程可以将自己一直运行在后台,并通过 fastcgi 协议接受数据包

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值