攻与防是对立的,有人说,做安全加固要比入侵渗透要难,因为只要你会利用千千万万种漏洞当中的其中一种,如果这个系统当中恰好存在这个漏洞,那么你就可以成功的入侵,但是做安全加固则不然,想要做到百分百安全,你就要懂得如何防范这千千万万种漏洞——这几乎是不可能做到的——事实上,即使做到了,你也要面临许许多多的未知漏洞(未公开的0day),你不可能掌握所有未公开的漏洞。所以,做到百分之百安全是不可能的——不过我们可以努力让系统变得更加安全:)。
所以安全做的好的都是大牛,恩,真的是大牛…那么对于我们这些彩笔来说,只懂得攻而不懂得防,这怎么行。虽然我们不懂得那么许多的安全知识,但是可以用一些“另类”的方法来加固我们的系统——至少给入侵者一些错误的指引,可能会让他们不知所措。
[align=center]/*本人能力有限,所以在此只简单讨论一下win下的WEB服务器相关安全内容
且,本文只适用于彩笔科普等级,高级别的大牛请直接无视…*/[/align]
№.1 多数的安全隐患存在于脚本程序上。
相信大家都有这样这样的感触:如果我们的目标是XX站点的服务器最高权限,那么我们的思路首先会放在WEB程序上,而不是去采用溢出或其他手段来针对服务器直接下手。是的,事实的确是这样,就一台WEB服务器而言,WEB程序几乎是最脆弱的部分——形成这种状况的原因有很多,在这里我们就不进行讨论了。
所以想要保证系统的安全,要做的最基本的事情就是做好WEB程序的安全。但是关于如何做好WEB程序的安全在这里我们就不进行过多的讨论了,关于这方面我相信大家都有很多的想法和相当具有可实施性的方法。
№.2 win?linux?unix?
我想大家在渗透之前肯定是要先踩好点,那么踩点工作都有哪些呢?我想一定会有知道目标服务器的操作系统和网站容器。我不知道大家喜欢用什么样的方式来获得这些信息,但是我想不同的操作系统和网站容器他们标志性的不同点就是默认的404页面,也就是说,随便输入一个不存在的404页面,如果采用的是默认的404页面,那么一眼便知了,IIS还是apache还是什么。如果我使用的是apache,自定一个404页面,而这个页面看起来和IIS的默认404页面是一模一样的,那么…你在入侵的时候会想太多吗?所以不要小看了默认的404页面,其实修改默认的404页面还是很有用的,例如这样做对于黑客的暴力扫描还是有一定效果的。
拿我的博客来说,用啊D对我的博客进行目录的暴力扫描的时候,你会发现,凡是字典里面存在的目录名称都会在扫描结果里面出现:当然,这些结果都被转到自定义的404页面了,所以软件认为这些页面是真实存在的——所以你根本无法看出这些扫描结果里面哪个才是真正存在的目录。随便打开一个扫描结果,你会发现,这竟然是该死的404….
当然,光是一个404页面并不能完全起到欺骗入侵者的作用,还是有很多办法来判断服务器系统和网站容器的,比如在head信息中就很容易得到这些——当然你也可以在这里做一些手脚,来达到简单欺骗的目的,在这方面我就不占用过多的篇幅来介绍了,感兴趣的话可以在internet上查找相关的资料。
№.3 严格的目录权限控制,可以大大避免黑客在入侵了服务器内某个网站之后进而渗透整个服务器的可能。
想必这一点在提权当中大家都是深有体会的了。
在win的IIS中,默认是在users用户组的权限下运行的。我们在刚开始使用IIS的时候可能会遇到这样的情况:IIS给出的默认站点并不能够使用,访问的时候出现403错误。当然大家都知道,403错误的意思就是没有足够的权限访问或执行,其实这个时候就是没有给你的WEB目录赋予users用户组足够的权限,你的WEB目录必须要赋予users用户组至少读取和执行的权限,有的目录可能还需要写入权限。具体的操作方法就是选中你的WEB目录,右键–属性–安全,你可能会看到下面的情况:
这里并没有针对users用户组的权限操作,这时候我们需要把users组添加进去。点击“添加”,输入“users”然后单击“检查名称”,就会发现本机的users组的的全名就显示出来了,这个时候我们点击“确定”就可以了。如下图是users组的默认权限设置:
我曾有过这样的经历:拿到了某站的webshell之后,发现这个站点根本不需要提权,因为IIS完全是运行administrators组的用户下的,你知道的,这意味着什么。在同一时间,我手上还有另外一个网站的webshell,而在这个webshell上我几乎不能做任何关于提权的事情——权限限制的太死了,除了可以读取站点目录以外,其他的什么事情也做不了。
这就是差距。严格的权限限制是做好安全的第一步。比如我们在提权时经常会用到的program目录,temp目录等等,或者这样说,除了给WEB目录赋予users组相应的权限以外,其他的任何目录users组都没有权限进行任何操作,哪怕是读取。这样即便是服务器上的某个站点被入侵,那么入侵者也只能在这个站点的WEB目录上转哟了。还有就是最好把WEB目录中的其他目录也设置好严格的权限,只在必须要使用写入权限的目录才赋予写入权限,只在必须要执行脚本的目录才赋予脚本执行权限。试想一下,当你利用一个上传漏洞像服务器上传一个shell文件的时候,假设你传到了默认的上传目录(这个目录是专门存放上传的图片文件的),那么如果管理员把这个权限设置成不允许脚本执行,那不也是白费?当然,你会想传到其他的目录当中去,但是如果其他的目录没有写权限呢?当然了,既必须有脚本执行权限又必须有写入权限的目录多半时候是存在的,这里只是举一个例子,说明这样做至少会给入侵者带来很多的麻烦。
№.4 也许简单的误导会让入侵者不知所措。
有了权限了,可以添加账户了,那么你首先要做的事是什么?net user hacker F4CK /add && net localgroup administrators hacker /add ,是这样么?如果我给administrators组改个名字呢?给他起个名字叫做…叫做Guests怎么样?对的,Guests是默认的来宾用户组,那么原本的Guests组怎么办呢?你看我们把他命名为administrators怎么样?当然我们不会给真正的Guests组任何权限,当我们发现我们的“administrators”用户组多了用户的时候,那就要赶紧检查服务器哪里出了问题了,因为既然入侵者可以添加用户,那么至少说明入侵者已经拿到很高的权限了,这个时候需要万分警惕,并且马上清除入侵者的后门。
在这里顺便提一句关于系统补丁的事情,本来没想说的,但是后来想了想还是加上去吧。服务器及时打补丁是很重要的,不然即使你安全做的再好,没有打补丁的话,说不准人家一个远程溢出你就悲剧了呢…
№.5 数据库安全相关。
大家在入侵渗透的过程中可能都有这样的经历:如果遇到一个SA或root权限的注入点,那么这个站点基本就悲剧了。所以很重要的一件事就是,在非要必要的情况下,一定不要使用类似sa、root这样的高权限的数据库用户,因为一旦出现SQL注入漏洞,那么将是致命的!
№.56其实各类优秀的安全软件还是值得一用的。
事实的确如此。管理员不可能每天24小时不间断的守在服务器前不断的刷新,不断的监视服务器的各项状态,管理员也是人,也是需要休息的,然而机器不一样,只要给他足够的电他就会给你干活——如此,为何不选择一款优秀的安全软件运行在你的服务器上呢?至于安全软件的选择方面,我并不推荐360这样的产品,因为他至少在服务器上的表现不是很好,个人认为麦咖啡在服务器上的表现还是不错的,当然有很多很优秀的安全产品供我们选择。
除了这些杀毒类产品之外,我想还有必要安装一些特别针对站点或服务器安全的实时监控类的安全产品,例如XX狗,XX盾之类的,会给管理员节省不少精力。
№.7 关闭不必要的服务——只给入侵者留一个安全的80端口让他转哟去吧!
如果能够很好的做到以上几点,那么你的服务器至少也可以算的上是一个相对比较安全的服务器了——我想至少我这样的彩笔可能是无能为力了