未加星标

了解cgi/fast-cgi/php-cgi/php-fpm

字体大小 | |
[开发(php) 所属分类 开发(php) | 发布者 店小二03 | 时间 2018 | 作者 红领巾 ] 0人收藏点击收藏
0x00什么是cgi

即CommonGatewayInterface公共网关接口,是协议!!!

运行在服务器上的程序,fork-and-execute模式,因为web服务器只能处理静态html/css,需要动态的就要交给cgi

,有标准输入,输出和环境变量的语言都可以编写,如Cphppython,shell,perl等。

//网上找的两张图,比较直观描述了cgi.


了解cgi/fast-cgi/php-cgi/php-fpm
了解cgi/fast-cgi/php-cgi/php-fpm

cgi通过环境变量获得传递的参数,相关环境变量如下:

环境变量 意义 SERVER_NAME CGI脚本运行时的主机名和IP地址. SERVER_SOFTWARE 你的服务器的类型如:CERN/3.0或NCSA/1.3. GATEWAY_INTERFACE 运行的CGI版本.对于UNIX服务器,这是CGI/1.1. SERVER_PROTOCOL 服务器运行的HTTP协议.这里当是HTTP/1.0. SERVER_PORT 服务器运行的TCP口,通常Web服务器是80. REQUEST_METHOD POST或GET,取决于你的表单是怎样递交的. HTTP_ACCEPT 浏览器能直接接收的Content-types,可以有HTTPAcceptheader定义. HTTP_USER_AGENT 递交表单的浏览器的名称、版本和其他平台性的附加信息。 HTTP_REFERER 递交表单的文本的URL,不是所有的浏览器都发出这个信息,不要依赖它 PATH_INFO 附加的路径信息,由浏览器通过GET方法发出. PATH_TRANSLATED 在PATH_INFO中系统规定的路径信息. SCRIPT_NAME 指向这个CGI脚本的路径,是在URL中显示的(如,/cgi-bin/thescript). QUERY_STRING 脚本参数或者表单输入项(如果是用GET递交).QUERY_STRING包含URL中问号后面的参数. REMOTE_HOST 递交脚本的主机名,这个值不能被设置. REMOTE_ADDR 递交脚本的主机IP地址. REMOTE_USER 递交脚本的用户名.如果服务器的authentication被激活,这个值可以设置。 REMOTE_IDENT 如果Web服务器是在ident(一种确认用户连接你的协议)运行,递交表单的系统也在运行ident,这个变量就含有ident返回值. CONTENT_TYPE 如果表单是用POST递交,这个值将是application/x-www-form-urlencoded.在上载文件的表单中,content-type是个multipart/form-data. CONTENT_LENGTH 对于用POST递交的表单,标准输入口的字节数. 0x01什么是fast-cgi

cgi进程管理器,cgi升级版,也是一个协议。将cgi保存在内存中以提高性能(不用像cgi一样每次请求都解析php.ini)。可独立于服务器。

工作原理:

1. WebServer启动时载入FastCGI进程管理器(IISISAPI或ApacheModule)

2. FastCGI进程管理器自身(master)初始化,解析配置文件,初始化执行环境,启动多个CGI解释器进程(可见多个php-cgi/worker)并等待来自WebServer的连接。

3. 当客户端请求到达WebServer时,FastCGI进程管理器(master)选择并连接到一个CGI解释器(worker)。Webserver将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。

4. FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回WebServer。当FastCGI子进程关闭连接时,请求处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在WebServer中)的下一个连接。在CGI模式中,php-cgi在此便退出了)

当worker不够用时,master可以根据配置预先启动几个worker等着,同时如果发现空闲worker太多时,也会停掉一些,这样就提高了性能,也节约了资源

而对应的是,只要是遵循了这个协议标准实现的程序,就可以称之为FastCGI程序

这就是fastcgi的对进程的管理。

0x02什么是php-cgi

cgi解释器进程,解释PHP脚本。

0x03什么是php-fpm

PHPfast-cgi,对fast-cgi的PHP实现,可调度php-cgi进程。可以平滑重载配置。

0x04cgi安全问题

1. shellsock

参考 重温经典:shellshock漏洞重现及分析

2. 解析漏洞

环境:vulhub

以nginx为例进行重现:

判断漏洞,在任意图片后加/xxx.php


了解cgi/fast-cgi/php-cgi/php-fpm
了解cgi/fast-cgi/php-cgi/php-fpm

图片被解析

在上传图片马即可(尝试phpinfo):


了解cgi/fast-cgi/php-cgi/php-fpm

更多解析漏洞参考:

解析漏洞总结

0x05结语

时不时还能看到cgi-bin,整理下相关概念,不至于太混乱。

0x06参考资料

https://www.jdon.com/idea/cgi.htm

https://www.zhihu.com/question/19998865

www.nowamagic.net/librarys/veda/detail/1319

www.cnblogs.com/wanghetao/p/3934350.html

https://segmentfault.com/q/1010000000256516

www.cnblogs.com/LittleHann/p/4561462.html

https://www.leavesongs.com/PENETRATION/fastcgi-and-php-fpm.html#

本文开发(php)相关术语:php代码审计工具 php开发工程师 移动开发者大会 移动互联网开发 web开发工程师 软件开发流程 软件开发工程师

tags: cgi,php,FastCGI,CGI,表单,进程,递交,com,HTTP,管理器,worker,WebServer,REMOTE
分页:12
转载请注明
本文标题:了解cgi/fast-cgi/php-cgi/php-fpm
本站链接:https://www.codesec.net/view/597086.html


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 开发(php) | 评论(0) | 阅读(15)