事实上,有许多方法可以渗透到一个站点。从开发到在线运营,一个网站需要经过许多环节和人员。任何环节或人员都可能利用弱点,造成巨大损失。常见的入侵方式如下:
1.利用网站本身的漏洞。例如sql注入。下面举一个最简单的例子来说明sql注入是如何导致库脱落的。
例如,如果我们的站点上有sql注入表格,则可以执行sql语句,因此最简单的方法就是,通过该表格将数据库dump输入硬盘上的web目录,然后进行下载。当然,这也涉及到如何通过触发web异常来获得web根目录等(facebook就这样被白帽黑客调戏)。或是,我首先通过正常渠道向库中提交一个web页面,然后通过该表格提交一个mysql的dump命令,好了,我们的服务器硬盘上多了一页,可以访问,如果该页面具有上传下载等功能,我就会得到一部分我们服务器的控制权(术语叫webshell)。
二、使用部署、运营过程中的疏忽,如某些服务器软件,自带一些管理后台和界面,如tomcat的manager页面、jboss的jmxconsole、wampp的webdav等。这类背景通常是为开发者设计的,非常脆弱,而且一般都有默认的用户名和密码,不应该在网上出现,如果运营商在部署系统时没有足够的安全意识,暴露这些东西就会带来潜在的风险。我曾经在过这个问题上工作过很多次。管理后台也有同样的问题。比如运营过程中的备份和上传也容易爆发弱点。最简单的方法就是用搜索引擎搜索indexof/upload或者indexof/backup,看看能搜到多少有趣的东西(我不小心搜到了一个包括用户名、手机号、邮箱在内的招聘站库)。
3.从办公网络开始,然后进入服务器系统。因为办公网络使用的人比较复杂,比如有的人喜欢在休息的时候逛这个论坛,有的人习惯上那个网站。如果有人上了网站,挂了木马。或者收到包含木马的邮件打开。可能会导致办公机器首先沦陷,办公机器甚至服务器往往很容易。以后可以想象。
4.直接入侵服务器。这在windows系统下很明显,溢出可能会导致管理员权限的获取。linux相对安全。
5.社会工程,以上传统方法对技术要求较高。社会工程攻击是重复利用人的弱点,骗取系统权限等有价值的信息。比如一个电话打过去,假装是同事,然后说:我是xxx部门的xxx,现在要做什么,但是没有权限,我们的密码是什么?如果你忙得焦头烂额,很可能你会直接说密码。或者事情很简单,坏人手里有很强的库,包括很多常用的默认密码(甚至公司内部常用的默认密码),用这些库爆破你的服务器。直接获得权限。预防这种灾难的后果也很简单:堵住坏人的路。
1.提高系统的安全性。从开发人员的安全开发技术培训出发,防止sql注入、xss等严重漏洞的出现。培养员工的安全意识等。在设计系统时,应考虑安全性、加密性、存储性和传输性,如果一个子系统沦陷,是否会导致其他子系统沦陷等。2.审计要做好。提前发现异常。事后发现漏洞。3.谨慎使用外部合作和三方软件。不要让你无法控制的东西成为你的安全短板。此外,提醒一下,其实坏人手中的库很多,对于有价值的网站,会有人用各种各样的库来刷。社会工作者的库比我们想象的要大得多。每个人都要注意安全,千万不要一个密码走遍全网,在一些不靠谱的站上注册,使用被盗也没关系的密码,而邮箱密码和银行密码最好单独设置,单独使用。别以为自己的账户没有被盗,而是别人登过你的账户,然后发现没有搞头又走了,你不知道而已,等哪天有搞头,你就会发现你的账户被盗。