CTFHUB-Apache Mod CGI(PHP学习)

本文介绍了Apache ModCGI的工作原理及其优化,包括如何通过.htaccess配置CGI执行权限。讨论了利用CGI绕过disable_functions的场景,并展示了通过创建.htaccess文件和shell脚本来实现命令执行的过程。然而,实际执行中遇到了权限问题,表明了安全防护措施的有效性。
摘要由CSDN通过智能技术生成

利用 Apache Mod CGI

使用条件:

Linux 操作系统 Apache + PHP (apache 使用 apache_mod_php) Apache 开启了cgirewrite

Web 目录给了AllowOverride权限

当前目录可写

原理简述

早期的Web服务器,只能响应浏览器发来的HTTP静态资源的请求,并将存储在服务器中的静态资源返回给浏览器。随着Web技术的发展,逐渐出现了动态技术,但是Web服务器并不能够直接运行动态脚本,为了解决Web服务器与外部应用程序(CGI程序)之间数据互通,于是出现了CGI(Common Gateway Interface)通用网关接口。简单理解,可以认为CGI是Web服务器和运行其上的应用程序进行“交流”的一种约定。

当遇到动态脚本请求时,Web服务器主进程就会Fork创建出一个新的进程来启动CGI程序,运行外部C程序或Perl、PHP脚本等,也就是将动态脚本交给CGI程序来处理。这样,每次用户请求动态脚本,Web服务器都要重新Fork创建一个新进程去启动CGI程序,由CGI程序来处理动态脚本,处理完成后进程随之关闭,其效率是非常低下的。

而对于Mod CGI,Web服务器可以内置Perl解释器或PHP解释器。也就是说将这些解释器做成模块的方式,Web服务器会在启动的时候就启动这些解释器。当有新的动态请求进来时,Web服务器就是自己解析这些动态脚本,省得重新Fork一个进程,效率提高了。

Apache在配置开启CGI后可以用ScriptAlias指令指定一个目录,指定的目录下面便可以存放可执行的CGI程序。若是想临时允许一个目录可以执行CGI程序并且使得服务器将自定义的后缀解析为CGI程序执行,则可以在目的目录下使用htaccess文件进行配置,如下:

Options +ExecCGIAddHandler cgi-script .xxx

这样便会将当前目录下的所有的.xxx文件当做CGI程序执行了。

由于CGI程序可以执行命令,那我们可以利用CGI来执行系统命令绕过disable_functions。

 利用ctfhub复现

 

 一个是GetFlag

点进去看

 另外一个是清空backdoor目录

backdoor目录下的index.php自带了shell

我们蚁剑连上去

 查看根目录

 有个/readflag

查看phpinfo

 被禁掉一大堆函数

这里可以使用蚁剑的插件来绕过

 

 

 也可以自己写.htaccess

Options +ExecCGI
AddHandler cgi-script .ant

上传到网站上

 再写个shell.ant上传上去

#!/bin/sh
echo&&id

直接访问是不行的要赋予可执行权限

?ant=chmod('shell.ant',0777);

 不知道为什么这里执行不了啊

始终无法访问啊😭

可插件却可以执行

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值