朋友的网站被挂马拉,想想一般被挂马,渠道无非:密码泄露、操作系统漏洞、web server 漏洞、语言解析器漏洞、数据库漏洞、应用程序漏洞。因为是虚拟主机,所以自己能做到的首先是找到应用的漏洞。要找到这个漏洞,无非三个途径,一个是通过搜索引擎找这个应用的求助记录,这样就会找到别人处理此类事务的方法,进而修复漏洞。在一个就是查看源代码,找出漏洞,这个可行性实在太差,因为多几万行源代码,如果没有相关经验,找出漏洞那是做梦。最后就是分析web server 的日志,找出异常访问,进而找出漏洞。
很长时间没有分析过东西,拿到日志一看,几十万行,还真是无法下手,后来想想,无非是ip地址,访问时间,访问的url 及访问者提交的身份信息。首先在日志中找出搜索引擎的蜘蛛的特征信息,然后过滤掉,这个最好维护一个特征信息库,这样下次分析日志的时候就方便拉,最后取出ip地址,对它剔重,然后用ip地址统计出每个地址的访问日志条数,那些访问量比较少的,也可以忽略不计,然后再按时间分组,毕竟受到攻击到被挂马完成是一个比较窄的时间区间,最后对一些特定文件的访问页可以忽略不计,毕竟有些文件是不可能被挂马的,那么剩下的url就是可疑访问拉,我们写个脚本重复执行这些url,并且记下日志,应该很快就找到漏洞所在的文件拉,这个时候根据输入调整程序可能就会比较快的找到漏洞拉。