国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > php开源 > 综合技术 > CGI程序安全要从Web服务器配置入手

CGI程序安全要从Web服务器配置入手

来源:程序员人生   发布时间:2014-01-15 04:32:19 阅读次数:2943次
随着防火墙技术的发展以及人们对服务器本身的安全性的重视,未来的主流攻击方向将逐渐转向Web端口.CGI程序本身的安全性是程序员的事情,这对于某些管理员来说他们是无能为力的.但我们仍然可以通过正确合理的配置,使我们的Web服务器降低CGI程序本身安全问题所带来的各种威胁.本文便是从CGI安全角度来描述了两种主流的Web服务器(IIS和APACHE)的具体配置,相信这样配置之后,我们的服务器安全性会得到很大提高.  

  一、Windows IIS环境

  由于Wmdows+IIS+CGT本身的安全性并不好,所以会出现的问题比较多。好比说PsKey最近发现的一批LB5000论坛的漏洞吧,这些漏洞都是基于Windows+IIS平台的。因为在Windows+IIS环境中,CGI程序文件权限没有可执行相和不可执行一说。所以,只要是在有脚本执行权限的虚拟目录里,CGT文件都会被执行。这就带来了很多安全上的问题。PsKey发现的几个漏洞都是往.CGI文件里写入符合Peri语法的语句,来构造一个小型的WebShell。而对于一个功能强大的CGI程序来说,其自然不可能面面俱到,多多少少部会存在一些问题也属正常。但只要控制好虚拟目录的权限,危险性将会大大降低。

  现在我们以LB为例"对于LB来说,它本身很多地方已经做得很好了,但其安全问题大多就是由干对一些字符的过滤不严所造成的。在IIS中默认情况下,子目录将继承父目录的权限,如果一个目录被设置了 "脚本和可执行程序"权限,那么其子目录也将有"脚本和可执行程序"权限。所以,只要将LB5000论坛所在目录设置为可执行,将其子目录全设为不可执行。这些问题就迎刃而解了。因为即使你可以往其子目录的一些文件里写入WebShell。但由于子目录没有执行权限,一样没用。

  LB的CGI程序和数据文件结构是这样设计的:将需要执行的CGI程序文件与一些.cgi后缀的数据文件放在不同的目录中。我们强烈建议写程序时这样做,因为这样。管理员就只需要按照要求去设置虚拟目录的权限了

  现在,让我们来一步一步对IIS虚拟目录进行设置吧.

  1.开始→运行,输入:%SystemRoot%System32Intestrviis.msc打开 "Intenet服务管理器"。

  2.选中将要设置的门IIS虚拟目录。点右键→属性,将LB论坛的cgi-bin目录设置为许执行"纯脚本"。

  3.然后再逐一对cgi-bin目录的子目录进行设置,比如cgi-bin/data目录进行设置,选中data目录,点右键→属性,将可执行设置为"无",这样一来.在此目录中的CGT程序将不允许被执行。

  按照这个方法。将cgi-bin目录下的每一个子目录的可执行权限都设置为 "无"。最后,还要将non-cgi目录进行设置,一般也将可执行权限设置为 "无"。

  好了,我们对论坛的目录权限设置就结束了。这样一来,即使论坛再被发现有什么过滤不严密的漏洞只要他无法执行被窍人WebShell的文件。一样不能达到人侵的目的。但我不敢保证就不出现任何问题,因为对于CGI漏洞的攻击千奇百怪,出其不意,很难说将来会不会出现什么新的攻击方法。但是,这样设置绝对可以很大程度地降低CGI程序本身所带来的威胁。  

  二、Windows十APACHE环镜

  由于默认安装APACHE服务器建以SYSTEM仅限启动。这一点它和IIS不同。在IIS中,如果CGI程序解释程序不在LM/W3SVC/InProcessIsapiApps中的话。它的权限疑继:敢DLLHOST.EXE;的IWA.M_-MACHINENAME权限。但APJACHE一旦启动,所有的CGI程序都会继承apache.ex.e的SYSTEM权限,所以距危险。一旦一个CGT程序出现问题。那么服务器将完全被控制。如果你真的想在Windows上跑APACHE的话,强烈建议另建一个CUESTS组的用户,用这个新建的用户启动APACHE服务。这种情况下对CGI程序本身来说。安全性要比IIS中稍好些。因为APACHE中,CGI程序的解释器是在程序的首行定义的,如:#!c:/perl/bin/perl,而IIS则是是在LM/W3SVVC/ScriptMaps中。如果商行没有定义,那么CGI程序运行将出错。所以。如果要想利用程序漏洞写出一个可以成功执行的WebShell是有一定难度的,但这并不代表不可以。我在测试中发现,其实首行不需要定全路径的,写成这样也可以:#!peri。因为在安装ActivePerl的时候,其会在环境变量的PATH中自动加上peri.exe的路径。所以我们成功利用这种漏洞的困难减少了。当然在这种环境下,我们也可以对APACHE配置文件httpd.conf进行合理的配置以降低来自CGI程序本身带来的威胁.

  下面我们来对APACHE服务及其配置文件httpd.conf进行配置。

  1.在正确安装好APACHE服务器后,新建一个用户。并将其从原来的USERS组中删除,将它加到GUESTS组中,命令如下;  

  net user apacheuser newpassword/add

  net localgroup users apacheuser/del

  net localgroup guests apacheuser/add  

  2.将APACHE安装目录(如:C:apache)的权限设置为apacheuser只读和执行,其他非administrators组用户拒绝访问,还要将C:apachelogs目录设置为可写和可修改,不然APACHE会运行出错,不能启动.命令如下:

  3.现在再让APACHE服务以这个新建的用户apacheuser来启动.开始→运行,输入:Services.msc选中apache服务这一项,然后点右键→属性→登录→此帐户→浏览,选择我们刚才新建的那个用户(这里是以apacheuser这个用户为例),在下面的密码框中输入用户名的密码(这里是newpasswork),然后一路"确定"下去.

生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生