快捷搜索:

CGI安全:从Web服务器配置入手

跟着防火墙技巧的成长以及人们对办事器本身的安然性的注重,未来的主流进击偏向将徐徐转向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),然后一起"确定"下去.

这样.APACHE办事就设置好了,接着,我们再来对httpd.conf进行设置,照样以LB5000论坛为例.我们要对LB的每个目录进行具体的设置,必要在httpd.conf文件中添加一些内容.

4.先设置cgi-bin目录如下:

ScriptAlias/LB5000/cgi-bin/"d:/inetpub/wwwroot/LB5000/cgi-bin/"

AllowOverride None

Options ExecCGI

Order allow,deny

Allow from all

5.然后再逐一设置其子目录,这里只以cgi-bin/data目录为例,其他的以此类推:

Alias/LB5000/cgi-bin/data/"d:/inetpub/

wwwroot/LB5000/cgi-bin/data/"

cgi-bin/data">

AllowOverride None

Options None

Order allow,deny

Allow from all

6.着末别忘了设置non-cgi目录:

Alias/LB5000/non-cgi/"d:/inetpub/wwwroot/LB5000

non-cgi/"

AllowOverride None

Options None

Order allow,deny

Allow from all

到这里,Windows情况下的APACHE基础上设置好了。

三、Linux/Unix+APACHE情况

这种情况相对付前两种来说,安然性高得多。首先,一个CGI法度榜样要履行,那么在文件系统傍边必须要有可履行权限,即+x。你有能力往.cgi文件里写一个完备的WebShell,但并不代表你可以让它有履行权限。其次,还要在虚拟目录里定义可履行。以是,这种设置设置设备摆设摆设的CGI法度榜样安然问题大年夜多半都出在提交不法数据裸露敏感文件以及直接履行法度榜样等方面。而这些就与设置设置设备摆设摆设关系不大年夜了,以是我也就不赘述了。

后记

好了,颠末上两的具体设置设置设备摆设摆设之后,应该说可以增强Web办事器的安然性。但也不必然就很安然了。这还要看CG,法度榜样的布局。一样平常的编写布局是这样的,把所有必要履行的法度榜样集中放到一个目录、在设置设置设备摆设摆设Web办事器时给这个目录履行脚本的权限。其他所有目录都不要给履行脚本的权限。所有必要读写的数据文件集中放到另一个目录。在设置虚拟目录时不要给这个目录任何权限。如有需要也可以将它放到Web目录以外的目录。将一些自已写的模块文件和函数文件集中放到一个目录,设置虚拟目录时不要给任何权限,包括造访权限。到这里,关于Web办事器的设置设置设备摆设摆设就差不多了。

您可能还会对下面的文章感兴趣: