一般用户可能没有感觉,但站长朋友肯定知道,如果一个网站放置一段时间不管它,等某一天你再去看它时,发现它可能都被挂马了。其实网站被挂马是常见现象,特别是基于CMS开发的网站。
网站一旦被挂马,就会给访客和网站自身带来一些麻烦,比如说:
网页上会存在一些恶意脚本,可能会弹出很多垃圾广告弹窗、跳转到不相关甚至是非法的网站上、插入大量链接、网页死循环等,降低了访问体验;
原网站内容被非法篡改,网站面目全非;
影响网站SEO效果,降低百度等排名,网站极容易被降权等;
非法修改网站源码,甚至删除了网站程序文件等,造成数据损失。
上面讲的这些危害后果,其实网站一旦被挂马后,清理也是很麻烦的一件事,因为黑客已经破坏了你网站的源文件,而且不止一处插入了恶意代码。
那这些黑客是如何将恶意代码植入我们网站程序中的呢?无非是这几步:
1、黑客寻找网站漏洞并利用
这里的漏洞主要有这些:
文件上传漏洞:比如上传页面没有对上传文件格式做验证导致上传了动态脚本(如直接上传了php文件),再者是上传页面没有做权限验证导致非法用户也能上传文件等;
表单数据未过滤漏洞:比如用户在发表文章时,可以插入JS、CSS代码,这样就足以植入恶意脚本,页面渲染时就会运行这些JS、CSS代码;
SQL注入漏洞:存在SQL注入点,黑客可以入侵数据库进行操作,严重的还能删库;
管理后台弱口令漏洞:一些管理后台帐号密码过于简单(比如 admin),一猜就中,直接登录进入后台,想怎么操作就怎么操作 ...
2、恶意代码植入
找到漏洞后就可以利用,然后在网页程序中植入恶意代码,这样用户访问到页面后就会加载到这些恶意代码,攻击者的目的也就达到了。
既然我们知道黑客挂马的大致流程,那如何避免网站被挂马呢?结合我十几年的运维经验整理了一些建议供大家参考:
1、网站建设时请尽可能不要选择CMS
现在市面上的CMS源代码都是公开的,所以0day漏洞也很多。漏洞公开后,大家只要找到是这种CMS建的站,基本上都能攻击成功,所以波及范围较广。
但如果我们的程序是自主开发的,那攻击者不知道我们的源码逻辑,攻击难度会很大。如果是基于CMS建的网站,一定要留意官方发布的补丁及时修复。
2、用户提交的数据做好过滤
在WEB开发领域,我们一直强调用户的任何输入都是不能相信的,我们在拿到用户提供的数据后务必要做必要的核验(格式是否正确)和过滤(过滤一些敏感字符)。我的建议是:
3、源码目录及文件权限严格控制
这个是很重要的,既使攻击者拿到了上传漏洞,但是我们只允许它上传到特定目录,其它目录没有写权限,那就感染不了,如果没有执行权限,那上传的动态脚本也是无法执行的。
4、后台使用复杂口令
后台地址改成无法猜到的地址,密码一定要设得复杂点。
5、定期对站点进行木马查杀
定期把站点备份好,然后做木马查杀,现在杀毒软件是可以查杀WEB木马的。