Dec 26

脚本木马之虚拟主机防护篇 不指定

ouwsh , 14:27 , 安全防护 , 评论(0) , 引用(0) , 阅读(1124) , Via 本站原创 | |
文章作者:李嘉义 [中国黑客联盟]
信息来源:《黑客X档案》

前言:
自从换了家公司快一年了,一直在忙。好久没写点东西了,一是由于工作太忙,再就是关于攻击方面的文章有太多的人在写,也不多我一个。安全防守的总觉得高人有的是,写出来也丢人!但通过前一阵对263虚拟主机服务器的检测。我觉得真有写点东西的必要了。。。想想如果进入虚拟主机的人不是我,而是个有恶意的人,把网站全删了,一个网站索赔一万,近千个网站要赔多少钱不用我算吧,这还不算由此失去众多客户带来的损失。。所以该给服务器的管理员们提个醒了……

正文:
防护方式

第一式: [ 脚本监控 ]
实施环境:Windows操作系统
实施方法:安装对脚本监控较强的防毒软件!如:Kaspersky(卡巴斯基)。题外话:我的脚本常常被他kill….有时只能把他的监控临时关掉!
个人意见:实施起来比较容易,装一个好的防毒软件就可以了。263主机就用了此法!但未必太管用,不是什么马都可以查杀的。而且当我把程序加一下密,防毒软件也认不出来。呵呵。。。仅可作为初级防线!

第二式: [ 防ASP马之FSO组件 ]
实施环境:Windows操作系统 IIS模式下
实施方法:通过使FSO(FileSystemObject) 组件调用失效可使ASP马跑不起来!此式又可分为两招:
第一招:修改注册表中程序标识值 ( ProgID )
出 招:单击“开始→运行”,在运行对话框中输入“regedit”,然后在注册表编辑器中找到“HKEY_CLASSES_ROOT\Scripting.FileSystemObject”
改为 “HKEY_CLASSES_ROOT\Scripting.FileSystemObjectcn90” 效果如下图!

说 明:此招只是把通常调用FSO的语句
“Set 对象名 = Server.CreateObject("Scripting.FilesystemObject")”
改为:“Set 对象名 = Server.CreateObject("Scripting.FilesystemObjectcn90")”
来使不知默认的ProgID改为何值的人无法调用FSO组件,从而达到使ASP木马跑不起来
的目的(如下图)。最后再提醒一点,通常有人认为把Scripting.FilesystemObject修改为Scripting.FilesystemObjectcn90是改(右边的)字符串值,那是没用的。字符串的值,你就当是说明好了,改不改都无所谓。。主要是要改左边的项值(文件夹重命名)

个人意见:此招看上去管用,但若有精通一些的人采用HTM L的标注通过FSO的类标识(CLSID)在网页里调用组件,改了半天的ProgID等于白改了!其实网上流传着改CLSID值的方法来完善此招..但是我通过经验告诉大家!这是行不通的.CLSID默认的字符串值为:{0D43FE01-F093-11CF-8940-00A0C9054228}有文章说改为{0D43FE01-F093-11CF-8940-00A0C9054229}或改为其它的尾数来实现CLSID调用时出错。我在多个操作系统上试行,此举无效。。至于为什么。我对微软的CLSID设置还不到非常精通的地步,但据我所知CLSID是微软分配的必需唯一的数值。当FSO的scrrun.dll组件被调用时,其实是先到注册表寻找指示,依赖CLSID下的数据运行.DLL文件,修改FSO的CLSID可能会引起值冲突或FSO干脆就无法调用了,如有高人对此持有异意,请到我论坛(http://bbs.cnsu.net)讨论!

第二招:禁用FSO组件
出 招:单击“开始→运行”,在运行对话框中输入“RegSvr32 /u %systemroot%\system32\scrrun.dll”

上图为成功的标志。点击确定就可以了!
说 明:利用微软自带的RegSvr32工具来注销FSO组件,实在是方便,如想再启用起来,只需在运行对话框中输入“RegSvr32 %systemroot%\system32\scrrun.dll” 即可。、
个人意见:此招方便有效,一般系统管理员很少通过FSO进行管理。对于需要FSO组件的客户不多的情况下。建议直接注销此组件!

第三式: [ 防PHP木马之内部函数的作用 ]
  实施环境:支持并运行PHP的各类操作系统
  实施方法:通过对PHP的核心配置文件php.ini的修改.禁用一些功能强大的内部函数!好了,我们开始行动吧。
第一步:打开php.ini文件(windows默认路径为"%systemroot%\php.ini" Linux默认路径在"etc/php.ini")
第二步:找到“ safe_mode = Off ” 改为“ safe_mode = On ”(已经打开的省略此步)
第三步:找到
改为:disable_functions = phpinfo , system , exec , passthru , shell_exec , popen , is_dir
第四步:找到“display_errors = On”改为“display_errors = Off”
第五步:保存→退出
说 明:PHP安全模式(safe_mode)打开后,"disable_functions ="后跟的全部都是被禁用的PHP内部函数。
“phpinfo”这个函数并不是为防止PHP木马而禁用的。。但它能返回所有的PHP基本信息,建议关闭以绝后患;
“system , exec , passthru , shell_exec , popen ,”这些属于命令执行类函数,关闭他们可以防止PHP木马执行webshell
“is_dir”这个函数的关闭,可以使既使有everyone可读的权限。。也无法将服务器目录及文件名返回到浏览器。但此时php的错误提示会告诉你是因为哪些函数出错造成的。所以我们还要关掉错误提示,就是我们的第四步。这样下来。。那些一般的工具黑客就会以为没有权限而放弃!
       个人意见:我发现网络广为转帖的一篇防PHP木马文章里把关闭的特定函数设为
“disable_functions= passthru,exec,shell_exec,system,fopen,mkdir,rmdir,chmod,unlink,dir ,fopen,fread,fclose,fwrite,file_exists ,closedir,is_dir,readdir.opendir ,fileperms.copy,unlink,delfile ”首先我对delfile也被列为被禁用的PHP函数打了一个超大的问号。再一个,PHP本身就是以提供了大量的函数,实现某功能比较容易而受到很多PHP编程者欢迎。如果禁掉这么多函数,以文本数据库运行的留言本,论坛等等等都无法正常使用运行。木马是禁止了,PHP的能力也损失了,怕是很多客户也只能离这个虚拟主机而去了。所以我其实连is_dir都不舍得关掉。我更喜欢只关闭phpinfo , system , exec , passthru , shell_exec , popen然后配以正确的权限设置比较有效。(关于权限配置我马上就会讲到的)
             

第四式: [目录权限验证防跨站入侵 ]
实施环境:Windows操作系统NTFS格式、Linux类操作系统!
实施方法:通过对目录的访问者权限的控制,使不同级别的用户在访问时只能依法(权限)办事。此式针对主流的Windows和Linux两大类操作分别出招!
第一招:apache(windows)服务器模式的目录访问权限控制
出 招:一、把所有分区的安全选项里的授权组或用户里除了Administratos和SYSTEM全都删除! (如下图)


二、针对每个虚拟主机用户目录再单加一个everyone读、写、和列出目录权限


说明:把上面的方法归于apache服务器类,并不说只能应用于apache,而是在IIS下有另一种权限配置方案比这个更好,可以说在windows操作系统下,如果不用IIS,采用其它web服务器模式的情况还是要用此法的!按此方式设置权限,由于相应的虚拟主机来宾用户只在授权的目录内拥有权限,在上一级根本就没授权,所以就会看不到别人的目录,当然就无法进到别人的目录乱来,从而无法形成跨站入侵了!除非那个人对你的网站的目录设置情况非常的了解。。但我想这种人就是内部人了,家贼难防。在这里我们不去考虑这些个别因素。不过,我发现好多的虚拟主机商把网站的目录以网站的名称去命名。。为了便于记忆和管理可以理解,但无形中又多了一种不安全因素,其实只要在设目录时在你要设的目录名后随机加几个字符,那么就没人能猜到你每个目录的名字了。。举手之劳,何乐而不为呢?
个人意见:如果谈到apache模式下防脚本木马一般就是指防PHP木马了。因为拿apache去和ASP结合的人,我基本上没见到,除了兼容性的问题,主要是近年的高版本apache支持ASP我从没成功配置过,也没见过别人成功(通过端口映射而使apache和IIS共存的情况除外)。而作为一个安全的服务器,权限是一定要配置的。但要跟据不同服务器的实际情况,要很多种方式结合起来才能真正达到安全有效。
其实针对apache服务器,可以在httpd.conf里加一句“php_admin_value open_basedir ‘你的网站目录’”但这个方式通过我的实际经验个人认为企业内部用或个人用还行,实在不适合虚拟主机的用户,没多大作用的方式,我只提一下,有兴趣的朋友自己研究吧,我就不想多说了。

第二招:IIS服务器模式的目录访问权限控制
   出 招:首先建立一个Guests组用户,然后对应网站的目录加入刚设的Guests组用户读取和运行的权限。。在IIS里对相应的目录安全性进行编辑。把默认的匿名访问用户改为你对应的Guests用户,点确定后会提示你再输入一次密码。正确输入后就OK了!(下图可供参考)





说明:如果你的IIS除了ASP,还支持了PHP。那么对你许可使用PHP的客户在PHP程序目录里也要根据对应的用户给予读和运行的权限,%systemroot%目录给予只读权限。(不给权限就不能运行PHP,这只是给菜菜们的懒办法,关于更细更安全的办法,要么自己想,要么到bbs.cn90.net找我,木头老怀疑我骗稿费,555冤呀,当注释喽!),所以建议在安装PHP时不要装在默认目录用默认名,以防被猜出路径,增加不安全隐患!
    个人意见:此方式对于每个用户给予单独的授权,未经授权的地方就不能访问,所以用此方式能比较好的控制每个用户活动的地方。此方式也是我在windows服务器里比较喜欢的一种设置方式!
李嘉义特别提示:由于在ASP程序里,有好多人使用Access类型数据库,而上面的权限配置出于目录继承的原因,而使Access类型数据库无法写入,那么使用这种数据库的朋友ASP程序就无法正常运行了!如果是管理网站不是很多的内部服务器,可以为数据库文件单开一个写权限即可。但对于虚拟主机来说,如此做根本就不现实。所以在给予网站目录权限的时候就要把写的权限加上! (如图)


第三招:Linux类服务器模式的目录访问权限控制
出 招:使用chmod命令让所有的系统内目录访问权限为711了(例:chmod 711 chameleon)

说 明:由于能管理和配置linux系统的管理员一般都是比较专业的,我这里就不对整个linux目录权限作更多的讲述。设为711权限后,PHP木马将无法读写及浏览到目录内的所有文件,以此达到防止跨站攻击的目的。
个人意见:仅仅设为711权限对于服务器安全是不够的,还需综合多种安全设置结合起来!比如在防PHP木马上还要对php.ini作些设置。
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]